概要: 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 容器则例外,因为这样位于容器的所有文件都将计入网站的磁盘空间使用量。