使用 Docker
观看视频教程
Docker 是开发员和管理员用于分布式应用的平台,能够实现在容器中运行应用程序。能够让您使用您的操作系统可能不支持而需要编译的特定软件,例如 Redis 或 MongoDB,或软件特定的版本。
Docker 是Plesk 的一个扩展。Plesk 能够让您运行和管理基于某些特定 Docker 镜像的容器,支持不仅在本地主机上使用 Docker 还支持在指定的远程机器上使用。
要求和局限性
-
在 Plesk 中使用Docker需运行以下操作系统:CentOS 7、RedHat 7、Debian 8、Debian 9、Ubuntu 14.04和Ubuntu 16.04。
在 Plesk for Windows 中,您可以使用安装在远程机器上的 Docker(请参阅 使用远程的 Docker )。
-
您可以在于 Windows Server 2008 上运行的 Plesk 里使用 Docker。
-
您无法在于 Docker 容器内部署的 Plesk 中使用 Docker。
-
要在Plesk中使用远程的Docker服务,需要额外的许可证。可 单独 购买也可将其作为 Hosting Pack 的一部分进行购买。
-
Docker 只能在x64 系统上运行。
-
不能迁移或备份 Plesk 中的 Docker 容器。但是您可以备份容器使用的数据(请查看 卷宗映射 )并下载快照。
-
支持安装有 Update 1 Hotfix 1 (7.0.1-686) 或更新版本的Virtuozzo 7。注意从此次更新起,创建基于CentOS 7的新容器会默认启用防火墙,因为 Virtuozzo 着力推动增强安全性。Plesk 管理员应手动配置防火墙以确保将 Plesk正常运行所需的端口 打开。
如何才能使用Docker
在Plesk中安装 Docker 扩展。
若要开始使用,请进入左边导航窗格中的 Docker 。
镜像目录
在目录( Docker > Docker 镜像目录 )中,Plesk 会显示来自 https://hub.docker.com/explore 的镜像。默认只会显示推荐的镜像。若要查看更多镜像,请使用搜索框或过滤器。
每个应用程序都可以使用多个版本。您可以选择相应的标签运行某个版本:
若要使用过滤器:
-
请点击搜索框旁边的箭头 按钮。
-
指定以下两项或其中一项:镜像名称和repository。
您可以选择的repositories 有:
- 本地 repository - 包含本地镜像。这些镜像已下载好且存储在带有Docker的服务器上。详情请查看 管理本地镜像 。
- Docker Hub - https://hub.docker.com/explore.
若要运行容器:
-
请进入 Docker > Docker 镜像目录 。
-
使用搜索框或过滤器在目录中快速找到应用。
-
若要查看 Docker Hub 上的应用描述和文档,请点击镜像名称。这不适合本地镜像。
-
若要运行特定版本,请点击 运行 按钮旁边的箭头,并选择应用版本。
-
若要运行选定应用的最新版本,请点击 运行 。
如果镜像位于本地,相应按钮类似于 运行(本地) 。
Plesk 会创建一个容器并提示您指定其设置,例如环境变量,然后运行该容器。您可以点击 取消 (在 设置 页面上)来取消运行。有关设置的详情请参阅 容器设置 。
-
该容器会出现在 Docker 目录 页面顶部的容器列表中。
请查看日志 (日志) 查找成功运行容器所需的设置。
容器设置
注解: 如果您想要更改容器设置,您则需要停止运行容器:当您保存新设置时,Plesk 会重新创建容器。
若要编辑容器设置,请进入 设置 或 详情 > 设置 。
限制内存
默认可在Docker容器中使用的RAM内存是不限的。若要限制使用RAM,请清空 无限 复选框,并在 内存限制 字段输入限制值,以MB为单位。
注解: 目前还不能限制Docker 容器的CPU和磁盘使用量。
注解: Docker容器是管理员级别的对象,不受订阅级别的cgroup限制 (CPU、RAM和磁盘使用量)的控制。
自动启动
如果没有选中 系统重启后自动启动 选项,那么在系统重启后,使用该容器的网站可能会中断,您则需要手动启动容器。
端口映射
默认会启用 自动端口映射 选项,容器的内部端口会被映射到主机系统上的任意端口(例如,32768)。
若要更改主机系统上的端口,请清空选项 自动端口映射 并在 手动映射 中指定其它的外部端口。如果当您清空该复选框时没有出现 手动映射 则表示容器不显示端口。
警告: 如果配置了端口映射,Docker会与主机系统的所有网络接口上的指定端口捆绑。也就是说可从任何地方访问该应用。Docker认定应用本身会执行验证,但其实有时候不会(例如 MySQL默认不允许匿名访问,但是redis允许)。
Plesk无法决定在指定的Docker 容器中安装哪些服务,也无法控制对这些服务的访问权限。如果您想要禁止从 Plesk外部访问应用,可使用主机系统上的防火墙进行手动设置。
卷映射
Docker 卷宗是服务器上被挂载到 Docker 容器的目录,因而您拥有可以从主机系统进行访问的永久存储。Docker 卷宗中的数据可以备份,而且更重要的是,当您停止或删除容器时不会删除数据。
For more information about data in containers, refer to the Docker documentation.
若要添加卷宗映射,请指定以下项:
- 左边的 “目的” 字段 - 进入容器内的某个目录的绝对路径。
- 右边的 “源” 字段 - 进入服务器中您要挂载到容器的目录的绝对路径。
若要映射更多目录,请点击 添加映射 。
设置环境变量
容器内的应用会使用环境变量。您可能需要添加更多变量或编辑现有的变量。Plesk 允许您添加任意数量的变量。
对容器的操作
您可对容器执行以下操作:
-
重启( 重启 )或停止( 停止 )容器。在此类情况下,容器会按当前设置进行重新创建。
注解: 如果数据没有保存到挂载的卷宗(请参阅 卷宗映射 部分),将会丢失。
-
查看日志和资源消耗情况( 详情 )。
-
更改容器设置,例如环境变量或卷宗映射( 设置 或 详情 > 设置 )。
在运行于 CentOS 的 Plesk 中,您可以为容器设置内存限制( 设置 > 内存限制 )。
-
重命名容器( 设置 > 容器名称 )。
-
使用相同或不同版本的镜像重新创建一个容器( 详情 > 重新创建 )。
-
基于使用您的自定义设置的容器创建一个镜像( 详情 > 保存为镜像 )。
-
创建容器的快照( 详情 > 下载快照 )。
-
移除容器( 移除 或 详情 > 移除 )。
重新创建容器
通常在您想要更新应用到更新的版本时需要重新创建容器。实际上就是您可以使用目录中的任何应用版本而非更新的版本重建容器。
重新创建过程中会保留自定义设置。若要保留容器内应用所使用的数据,需要在重新创建容器之前指定卷宗映射。通过卷宗映射能够访问容器内使用的目录(请参阅容器设置中的 卷映射 部分)。
若要重新创建容器:
- 进入 Docker 点击您要重新创建的容器下面的 详情 。
- 点击容器设置中的 重新创建 并指定镜像版本和是否使用默认的环境变量。
使用远程 Docker
默认 Plesk 会使用以 Plesk 组件形式安装的 Docker。但是,您也可以使用一个或多个不在 Plesk 内安装的 Docker 服务。注意一次只能使用一台服务器。选定的服务器的主机名会在Plesk中的 Docker 目录标头中显示。
注解: 管理远程Docker服务需要Plesk附加许可证密钥。若没有,则只能管理在Plesk服务器上运行的本地Docker服务。
配置远程服务
请根据 Docker 文档 配置运行Docker的远程服务器以在 Plesk 中使用该 Docker 作为远程服务器。
管理远程服务
以下步骤同时适用于 Plesk for Linux 和 Plesk for Windows。
若要开始使用在远程主机上运行的 Docker:
- 请进入 工具与设置 > Docker (在 服务器管理 下)。
- 点击 添加服务器 指定安装有 Docker 的远程服务器的设置。
- 若要开始在 Plesk 中使用该 Docker,请选定 设为活动 选项。
进入 Docker 的链接将会在左边导航窗格中显示。
若要在 Docker 服务之间切换:
- 请进入 工具与设置 > Docker (在 服务器管理 下)。
- 在服务器列表中选择您要使用的服务器,并点击 设为活动 。
另外,您还可以在编辑其设置时设置服务器为活动服务器。
使用自定义设置创建镜像
如果您想要基于您对容器所做的修改创建新镜像,请使用 另存为镜像 命令。会创建容器的快照,作为新的镜像在镜像目录中出现。因此,您可以使用自定义设置(例如环境变量)创建镜像。
若要基于您的容器创建镜像:
请进入 Docker > 详情 (容器名称下)> 保存为镜像 ,然后选择性地指定:
- 镜像名称 默认会生成一个 ID 而该 ID 会用作名称。
- 标签。您可以在此处指定镜像版本。默认该版本将是“最新”版。
已创建的镜像会出现在镜像目录中并被标记为 本地镜像 。
管理本地镜像
本地镜像是由 Docker 在本地磁盘上存储的镜像,对于此类镜像无需从镜像目录中下载。
镜像可通过以下方式成为本地镜像:
- 选定镜像的任何版本(标签),镜像即开始下载。不过您是稍后运行容器还是取消运行(在 设置 页面上),镜像都会本地保存。
- 您可以上传镜像到 Plesk 中的 Docker 目录里(Docker 镜像目录中的 上传镜像 )。
- 从容器创建一个自定义镜像(参阅 使用自定义设置创建镜像 )。
- 使用命令行界面创建镜像。
如果 Docker 至少有一个属于镜像的下载版本,该镜像则会在目录中被标记为 本地镜像 。 运行(本地) 表示已经下载了最新的版本。Plesk 还会显示某个产品现存多少本地镜像。
若要查看本地镜像和移除过期的本地镜像:
-
请进入 Docker > Docker 镜像目录 。
-
若要查找所有本地镜像,请点击搜索框旁边的箭头并选择 本地 (在 Repository 过滤器中)。
-
若要查看某个产品的所有本地镜像,请点击产品名称下的链接。将会显示所有本地镜像的标签和已占据的磁盘空间。
-
若要移除所有的镜像,请点击 清除所有镜像 。
-
若要移除指定的镜像,请点击您想要移除的镜像旁边的 图标。
设置 nginx 处理从域名到容器的代理请求
某些 Docker 容器会显示端口,因此可通过这些端口访问容器中的应用。
当您在网站上使用 Docker 容器中的应用时,您会发现不方便在其 URL 中指定非标准的端口。为了避免该不方便情况出现,您可以设置 nginx 处理从域名到该端口的代理请求,因而域名可以使用一个标准的端口(例如 80),无需在 URL 中明确指定该端口。
要求
- 必须在 Plesk 中运行 Nginx。
- 您必须手动映射容器内的端口到主机系统上的某个端口(例如,32768)( Docker > 选择一个容器> 设置 > 清空 选项 自动端口映射 )。
您已手动将某个容器内的端口映射到您的系统上的某个端口(例如,32768)后,则可以设置 nginx 处理从域名到该端口的代理请求,因而域名则可以在nginx 上使用标准的端口(例如,80)。若要实现,请通过下面的方式在域名设置中添加 nginx 的规则:
进入 网站与域名 > 域名> 代理规则 > 添加规则 并指定以下项:
- 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 容器则例外,因为这样位于容器的所有文件都将计入网站的磁盘空间使用量。