本文档旨在帮助您理解通过镜像创建 swarm 应用时界面的参数含义,顺利地进行参数配置,其中对一部分参数,会给出一些文档资源,供您了解更多信息。

镜像名称

  • 选择镜像列表中已有的镜像,提供全局搜索功能。
  • 直接输入镜像地址,以一个阿里云 wordpress 容器镜像地址为例,如 registry.cn-hangzhou.aliyuncs.com/acs-sample/wordpress:4.6,由域名、命名空间、镜像名称和标签构成一个完整的镜像地址。有关镜像地址的详细信息,参见 镜像基本概念

镜像版本

在镜像列表中选择镜像时,可以指定镜像的版本,即镜像的 tag 。如果不指定,默认会使用镜像的最新版本。

容器数量

设置容器实例的数量。多个容器实例可有效提高应用的可用性。

网络模式

选择默认host

  • 默认: 即 bridge 网络类型。连接到默认的网桥 docker0 ,此模式会为每个容器分配一个独立的网络命名空间,使用该设置可以看到在容器中创建了eth0。
  • host: 允许 container 使用 host 的网络堆栈信息。该方式创建出来的容器,可以看到主机上所有的网络设备,容器中对这些设备有全部的访问权限。

有关 Docker 容器网络的更多信息,参见 Docker container networking

restart

指定容器的重启策略。参见restart

  • 不勾选表示任何情况下都不会尝试重启容器。
  • 勾选表示系统会一直尝试重启容器,直到指定的容器正常运行。

command

设置容器启动后默认执行的命令及其参数, 推荐使用 Exec 格式。此命令会在容器启动且 docker run 没有指定其他命令时运行。参见 command

如果 docker run 指定了其他命令,command 指定的默认命令将被忽略。

command 有三种格式:

  • Exec 格式:CMD ["executable","param1","param2"],这是 command 的推荐格式。
  • CMD ["param1","param2"],与 Exec 格式的 Entrypoint 指令配合使用,为它提供额外的参数。
  • Shell 格式:CMD command param1 param2

Entrypoint

也是容器启动的执行命令,Entrypoint 指令可让容器以应用程序或者服务的形式运行。

Entrypoint 看上去与 CMD 很像,它们都可以指定要执行的命令及其参数。不同的地方在于 Entrypoint 不会被忽略,一定会被执行,即使运行 docker run 时指定了其他命令。

Entrypoint 有两种格式:

  • Exec 格式:ENTRYPOINT ["executable", "param1", "param2"],这是 Entrypoint 的推荐格式。
  • Shell 格式:ENTRYPOINT command param1 param2

CPU 和 内存限制

CPU 以 100 代表 1 核,内存的单位为 MB,可以为单个容器设置 CPU 和 内存的资源上限,方便您进行资源规划。对应的 compose 标签是 mem_limitcpu_shares。具体请参见限制容器资源

Capabilities

默认情况下,Docker 容器中 root 的权限是有严格限制的。借助 Linux kernel capabilities,可以为容器赋予相关权限,关于可为容器赋权的参数,参见 Runtime privilege and Linux capabilities

相关参数命令如下:

  • ADD 输入框:对应 –cap-add: Add Linux capabilities 参数,在此框中输入容器可以添加的 Capability Key,表示为容器增加这一权限。
  • DROP 输入框:对应 –cap-drop: Drop Linux capabilities 参数,在此框中输入容器默认已有的 Capability key,表示为容器删除这一权限。

容器启动项

勾选 stdin 表示为该容器开启标准输入;勾选 tty 表示为该容器分配一个虚拟终端,以便于向容器发送信号。通常这两个选项是一起使用的,表示将终端 (tty) 绑定到容器的标准输入(stdin)上,比如一个交互式的程序从用户获取标准输入,并显示到终端中。

端口映射

为主机和容器指定端口映射,以及网络协议(TCP/UDP)。用于容器和主机间路由,实现从外部访问容器。

端口映射是简单路由配置和负载均衡路由配置的前置条件,容器通过设置好的端口映射,对外提供服务。

简单路由配置

容器服务集群创建成功后,会自动创建 acsrouting 应用,包含了路由服务,即 routing,提供了简单路由的功能,每个节点都会部署该服务的一个实例。某个节点内,由 acsrouting_routing_index 容器实现集群内的路由转发,用来路由 HTTP 服务或者 HTTPS 服务。请参见简单路由(支持 HTTP/HTTPS)

Note 暴露 HTTP/HTTPS 服务时,您可以不配置具体的主机端口,可以使用 overlay 网络或者 VPC 网络来直接访问容器的端口。

负载均衡路由

配置该项参数时,由您自主控制路由的访问路径,包括SLB 前端端口 > 后端主机端口 > 容器端口这一整条路由映射。

预先设置好端口映射,然后再配置 container_port$scheme://$[slb_name|slb_id]:$slb_front_port 的映射。关于负载均衡标签的具体用法,请参见lb

数据卷

推荐使用数据卷来存储容器产生的持久化数据,更加安全,更容易管理、备份、迁移。参见 Use volumes

  • 选择新建一个数据卷。输入主机路径或者数据卷名,输入容器路径,设置数据卷权限 RW 或 RO。
  • 或选择 volumes_from。填写其他服务或容器的名称和权限参数,如 service_name:ro,如果不指定访问权限,默认是 rw 权限。参见 volume compose 。设置后,可成功授权该容器使用其他服务或容器的数据卷。

环境变量

环境变量支持键值对的输入形式,支持 array、 dictionary 和 boolean 等格式,具体参见 environment-variables

您可以为 Docker 容器设置相关的环境变量,环境变量可以作为标志,代表部署环境的一些参数。可以用来传递配置,构建自动化部署脚本等。

labels

标签是将元数据应用到 Docker 对象的一种机制。可以使用标签来构建镜像,记录 license 信息,描述容器、数据卷和网络之间的关系等。可以实现非常强大的功能。

标签支持键值对的输入形式,以字符串形式存储。您可以为容器指定多个标签。支持 Docker 原生的 Docker labels标签概览

平滑升级

选择是否允许开启。开启相当于添加 rolling_update=true 标签, 需配合 probe 标签使用,可保证容器成功更新,参见proberolling_updates

可用区调度

勾选跨可用区或者尽量跨可用区

您可以选择跨可用区将容器部署在两个不同的可用区;如果您选择了此选项,但是当前集群没有两个可用区或机器资源不够导致无法分布在两个可用区,容器创建会失败。

您也可以选择尽量跨可用区,容器服务会尽可能地将容器部署在两个不同的可用区中;无法满足时依然可以成功创建。

如果您不进行此项设置,容器服务会默认将容器部署在同一个可用区。有关可用区调度的详细信息,参见高可用性调度

自动伸缩

为了满足应用在不同负载下的需求,容器服务支持服务的弹性伸缩,即根据服务的容器资源占用情况自动调整容器数量。

有关容器自动伸缩的详细信息,参见容器自动伸缩