概要: Docker is a platform used to run applications in containers. It enables you to use specific software, such as Redis or MongoDB, or a specific version of software, which might not be supported by your operating system or might need compiling.

Docker is available as a Plesk extension. With it, you can run and manage containers based on specific Docker images, and to use Docker both on the local host and on remote servers.

In this topic, you will learn how to create, configure, and manage Docker containers in Plesk. You will also learn how to control remote Docker hosts from Plesk.

要求和局限性

警告: Docker 擴展會從 Docker Hub 按原樣下載鏡像而不會以任何方式進行預先配置。其中的某些Docker 容器或軟體僅用於可信的環境可能需要額外的安全設定。在Plesk中啟動這些下載的鏡像之前,需要自行增強其安全性。具體的說明,請參閱容器或軟體供應商的文檔。例如查看 Redis 文檔中的安全章節

  • 支援在以下作業系統上的 Plesk 中運行 Docker:CentOS 7、Red Hat Enterprise Linux 7、Debian 10、Debian 11、Ubuntu 18.04、Ubuntu 20.04、Ubuntu 22.04、AlmaLinux 8.x、Rocky Linux 8.x 以及 Virtuozzo 7 Update 1 Hotfix 1 (7.0.1-686) 或更高版本。

    在 Plesk for Windows 中,您可以使用安裝在遠端機器上的 Docker(請參閱 **使用遠端的 Docker**)。

  • 您無法在於 Docker 容器內部署的 Plesk 中使用 Docker。

  • To use remote Docker services in Plesk, you need an additional license. It can be purchased either separately or as a part of the Hosting Pack, Power Pack, or Developer Pack.

  • Docker 只能在x64 系統上運行。

  • 不能遷移或備份 Plesk 中的 Docker 容器。但是您可以備份容器使用的資料(請查看 卷宗映射 )並下載快照。

  • 支援安裝有 Update 1 Hotfix 1 (7.0.1-686) 或更新版本的Virtuozzo 7。注意從此次更新起,創建基於CentOS 7的新容器會默認啟用防火牆,因為 Virtuozzo 著力推動增強安全性。Plesk 管理員應手動配置防火牆以確保將 Plesk正常運行所需的埠 打開。

前提條件

Before you can start using Docker, the Docker extension must be installed on the Plesk server:

  • 如果您是Plesk管理員,請 從擴展目錄安裝擴展。
  • 否則,請聯繫您的主機提供商,並要求他們為您安裝該擴展。

Once the extension is installed, you are ready to begin. You will see the Docker option in the Navigation Pane.

image docker menu

鏡像目錄

在目錄( Docker > Docker 鏡像目錄 )中,Plesk 會顯示來自 https://hub.docker.com/explore 的鏡像。預設只會顯示推薦的鏡像。若要查看更多鏡像,請使用搜尋框或篩檢程式。

每個應用程式都可以使用多個版本。您可以選擇相應的標籤運行某個版本。

image docker catalog

若要使用篩檢程式:

  1. 請點按搜尋框旁邊的箭頭 image down arrow 按鈕。

  2. 指定以下兩項或其中一項:鏡像名稱和repository。

    您可以選擇的repositories 有:

    • 本地 repository - 包含本地鏡像。這些鏡像已下載好且存儲在帶有Docker的伺服器上。詳情請查看 管理本地鏡像
    • Docker Hub - https://hub.docker.com/explore.

若要運行容器:

  1. 請進入 Docker > Docker 鏡像目錄

  2. 使用搜尋框或篩檢程式在目錄中快速找到應用。

  3. 若要查看 Docker Hub 上的應用描述和文檔,請點按鏡像名稱。這不適合本地鏡像。

  4. 若要運行特定版本,請點按 運行 按鈕旁邊的箭頭,並選擇應用版本。

  5. 若要運行選定應用的最新版本,請點按 運行

    如果鏡像位於本地,相應按鈕類似於 運行(本地)

    Plesk 會創建一個容器並提示您指定其設定,例如環境變數,然後運行該容器。您可以點按 取消 (在 設定 頁面上)來取消運行。有關設定的詳情請參閱 容器設定

  6. 該容器會出現在 Docker 目錄 頁面頂部的容器清單中。

    image docker container running

請查看日誌 (日誌) 查找成功運行容器所需的設定。

容器設定

備註: 如果您想要更改容器設定,您則需要停止運行容器:當您保存新設定時,Plesk 會重新創建容器。

若要編輯容器設定,請進入 設定詳情 > 設定

image container settings

限制記憶體

默認可在Docker容器中使用的RAM記憶體是不限的。若要限制使用RAM,請清空 無限 核取方塊,並在 記憶體限制 欄位輸入限制值,以MB為單位。

備註: 目前還不能限制Docker 容器的CPU和磁片使用量。

備註: Docker容器是管理員級別的對象,不受訂閱級別的cgroup限制 (CPU、RAM和磁片使用量)的控制。

自動啟動

如果沒有選中 系統重啟後自動啟動 選項,那麼在系統重啟後,使用該容器的網站可能會中斷,您則需要手動啟動容器。

埠映射

默認會啟用 自動埠映射 選項,容器的內部埠會被映射到主機系統上的任意埠(例如,32768)。

若要更改主機系統上的埠,請清空選項 自動埠映射 並在 手動映射 中指定其它的外部埠。如果當您清空該核取方塊時沒有出現 手動映射 則表示容器不顯示埠。

When using manual mapping, by default Docker only binds to the specified port on the host system’s localhost interface (127.0.0.1). This way, the port is inaccessible from the Internet, and the application inside the container is safe from attacks. To have Docker bind to the specified port on all network interfaces of the host system, clear the 「a private port on the host」 checkbox. If you do, the application inside the container becomes accessible from the Internet, and can be reached on the specified port via any of the host system’s IP addresses.

警告: Docker presumes that authentication is carried out by the application itself, but sometimes it is not so (for example, MySQL/MariaDB does not allow anonymous access by default, but redis does). Making the application inside a container accessible from the Internet may result in the application being attacked by a malicious actor.

卷映射

Docker 卷宗是伺服器上被掛載到 Docker 容器的目錄,因而您擁有可以從主機系統進行存取的永久存儲。Docker 卷宗中的資料可以備份,而且更重要的是,當您停止或刪除容器時不會刪除資料。

欲瞭解更多有關容器中的資料的資訊,請參閱 Docker 文檔

若要添加卷宗映射,請指定以下項:

  • 左邊的 「目的」 欄位 - 進入容器內的某個目錄的絕對路徑。
  • 右邊的 “源” 欄位 - 進入伺服器中您要掛載到容器的目錄的絕對路徑。

若要映射更多目錄,請點按 添加映射

設定環境變數

容器內的應用會使用環境變數。您可能需要添加更多變數或編輯現有的變數。Plesk 允許您添加任意數量的變數。

對容器的操作

您可對容器執行以下操作:

  • 重啟( 重啟 )或停止( 停止 )容器。在此類情況下,容器會按當前設定進行重新創建。

    備註: 如果資料沒有保存到掛載的卷宗(請參閱 卷宗映射 部分),將會丟失。

  • 查看日誌和資源消耗情況( 詳情 )。

  • 更改容器設定,例如環境變數或卷宗映射( 設定詳情 > 設定 )。

    在運行於 CentOS 的 Plesk 中,您可以為容器設定記憶體限制( 設定 > 記憶體限制 )。

  • 重命名容器( 設定 > 容器名稱 )。

  • 使用相同或不同版本的鏡像重新創建一個容器( 詳情 > 重新創建 )。

  • 基於使用您的自訂設定的容器創建一個鏡像( 詳情 > 保存為鏡像 )。

  • 創建容器的快照( 詳情 > 下載快照 )。

  • 移除容器( 移除詳情 > 移除 )。

重新創建容器

通常在您想要更新應用到更新的版本時需要重新創建容器。實際上就是您可以使用目錄中的任何應用版本而非更新的版本重建容器。

重新創建過程中會保留自訂設定。若要保留容器內應用所使用的資料,需要在重新創建容器之前指定卷宗映射。通過卷宗映射能夠存取容器內使用的目錄(請參閱容器設定中的 卷映射 部分)。

若要重新創建容器:

  1. 進入 Docker 點按您要重新創建的容器下面的 詳情
  2. 點按容器設定中的 重新創建 並指定鏡像版本和是否使用預設的環境變數。

使用遠端 Docker

默認 Plesk 會使用以 Plesk 元件形式安裝的 Docker。但是,您也可以使用一個或多個不在 Plesk 內安裝的 Docker 服務。注意一次只能使用一台伺服器。選定的伺服器的主機名稱會在Plesk中的 Docker 目錄標頭中顯示。

備註: 管理遠端Docker服務需要Plesk附加許可證金鑰。若沒有,則只能管理在Plesk伺服器上運行的本地Docker服務。

配置遠端服務

請根據 Docker 文檔 配置運行Docker的遠端伺服器以在 Plesk 中使用該 Docker 作為遠端伺服器。

管理遠端服務

以下步驟同時適用於 Plesk for Linux 和 Plesk for Windows。

若要開始使用在遠端主機上運行的 Docker:

  1. 請進入 工具與設定 > Docker (在 伺服器管理 下)。
  2. 點按 添加伺服器 指定安裝有 Docker 的遠端伺服器的設定。
  3. 若要開始在 Plesk 中使用該 Docker,請選定 設為活動 選項。

The link to Docker will appear in the Navigation Pane.

若要在 Docker 服務之間切換:

  1. 請進入 工具與設定 > Docker (在 伺服器管理 下)。
  2. 在伺服器列表中選擇您要使用的伺服器,並點按 設為活動

另外,您還可以在編輯其設定時設定伺服器為動態伺服器。

image remote docker hosts

使用自訂設定創建鏡像

如果您想要基於您對容器所做的修改創建新鏡像,請使用 另存為鏡像 命令。會創建容器的快照,作為新的鏡像在鏡像目錄中出現。因此,您可以使用自訂設定(例如環境變數)創建鏡像。

若要基於您的容器創建鏡像:

請進入 Docker > 詳情 (容器名稱下)> 保存為鏡像 ,然後選擇性地指定:

  • 鏡像名稱 默認會生成一個 ID 而該 ID 會用作名稱。
  • 標籤。您可以在此處指定鏡像版本。默認該版本將是“最新”版。

已創建的鏡像會出現在鏡像目錄中並被標記為 本地鏡像

管理本地鏡像

本地鏡像是由 Docker 在本地磁片上存儲的鏡像,對於此類鏡像無需從鏡像目錄中下載。

鏡像可通過以下方式成為本地鏡像:

  • 選定鏡像的任何版本(標籤),鏡像即開始下載。不過您是稍後運行容器還是取消運行(在 設定 頁面上),鏡像都會本地保存。
  • 您可以上傳鏡像到 Plesk 中的 Docker 目錄裡(Docker 鏡像目錄中的 上傳鏡像 )。
  • 從容器創建一個自訂鏡像(參閱 使用自訂設定創建鏡像 )。
  • 使用命令列介面創建鏡像。

如果 Docker 至少有一個屬於鏡像的下載版本,該鏡像則會在目錄中被標記為 本地鏡像運行(本地) 表示已經下載了最新的版本。Plesk 還會顯示某個產品現存多少本地鏡像。

image docker local images

若要查看本地鏡像和移除過期的本地鏡像:

  1. 請進入 Docker > Docker 鏡像目錄

  2. 若要查找所有本地鏡像,請點按搜尋框旁邊的箭頭並選擇 本地 (在 Repository 篩檢程式中)。

  3. 若要查看某個產品的所有本地鏡像,請點按產品名稱下的連結。將會顯示所有本地鏡像的標籤和已佔據的磁碟空間。

    image remove outdated images

  4. 若要移除所有的鏡像,請點按 清除所有鏡像

  5. 若要移除指定的鏡像,請點按您想要移除的鏡像旁邊的 image red cross 圖示。

設定 nginx 處理從域名到容器的代理請求

某些 Docker 容器會顯示埠,因此可通過這些埠存取容器中的應用。

當您在網站上使用 Docker 容器中的應用時,您會發現不方便在其 URL 中指定非標準的埠。為了避免該不方便情況出現,您可以設定 nginx 處理從域名到該埠的代理請求,因而域名可以使用一個標準的埠(例如 80),無需在 URL 中明確指定該埠。

要求

  • 必須在 Plesk 中運行 Nginx。
  • 您必須手動映射容器內的埠到主機系統上的某個埠(例如,32768)( Docker > 選擇一個容器> 設定 > 清空 選項 自動埠映射 )。

您已手動將某個容器內的埠映射到您的系統上的某個埠(例如,32768)後,則可以設定 nginx 處理從域名到該埠的代理請求,因而域名則可以在nginx 上使用標準的埠(例如,80)。若要實現,請通過下面的方式在域名設定中添加 nginx 的規則:

進入 網站與域名 > 域名> Docker 代理規則 > 添加規則 並指定以下項:

  • URL 。指定使用在容器中運行的應用的網站的 URL。可以是主網站也可以是其中一部分。
  • 容器 。選擇以 Docker 容器形式運行的應用。
  • 。選擇在容器設定中指定的某個映射(某個容器內的一個埠映射到您的系統上的一個埠)。Nginx 將會代理到系統上該埠的請求。

代理規則在web伺服器配置中實現,例如在網站的  nginx.conf 檔中(在 /var/www/vhosts/system/$domain/conf/ 目錄中):

#extension docker begin
location ~ ^/.* {
    proxy_pass http://0.0.0.0:9080;
    proxy_set_header Host             $host;
    proxy_set_header X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
}
#extension docker end

代理規則在NAT後的伺服器上應運行良好。

備註: 通過代理規則連接到某網站的Docker容器不計入訂閱的磁碟空間使用量。如果網站目錄以卷的形式掛載到 Docker 容器則例外,因為這樣位於容器的所有檔都將計入網站的磁碟空間使用量。