欢迎您的访问
专注架构,Java,数据结构算法,Python技术分享

Docker Swarm教程(三):部署服务

► 前言介绍

Swarm 服务使用声明式模型,这意味着你定义了服务的期望状态,并依靠 Docker 来维护这个状态。该状态包括(但不限于)以下信息:

  • 服务容器应该运行的 Image Name 和 Tag
  • 有多少容器参与到这个服务
  • 是否有任何端口暴露给 Swarm 集群外的 Client
  • 当 Docker 启动时,服务是否自动启动
  • 服务重启时发生的特定行为(例如是否使用平滑重启)
  • 服务可以运行的节点的特性(如资源约束和布局偏好)

► 创建服务

要创建一个没有额外配置的单一副本服务,只需要提供映像名称即可。这里指定服务名为 my_web

docker service create --name my_web nginx

更多配置详见文末 《附录 1 创建服务时的可选参数》

查看服务

docker@ManagerX:~$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
e2tata1p7ufo        my_web              replicated          1/1                 nginx:latest

► 更新服务

假定上述的 my_web 服务仍然存在,使用以下命令将其发布端口更新为 80。

docker service update --publish-add 8080:80 my_web

更多配置详见文末 《附录 2 修改服务的参数》

查看服务

docker@ManagerX:~$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
e2tata1p7ufo        my_web              replicated          1/1                 nginx:latest        *:8080->80/tcp

► 回滚服务

还原服务的配置

docker service rollback my_web

► 服务扩容与缩容

docker service scale my_web=3

► 移除服务

使用 docker service ls 可以获取 Service Id 和 Service Name,然后通过 Service Id 或 Service Name 移除服务。

docker service remove my_web

► 其他相关操作

1、列出服务的任务

docker service ps my_web

ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE             ERROR                           PORTS
sjvogfokaeqk        my_web.1            nginx:latest        WorkerA             Running             Running 10 minutes ago
vezxfvtdpsul         \_ my_web.1        nginx:latest        ManagerX            Shutdown            Shutdown 11 minutes ago
xi1xrzu9qrkt         \_ my_web.1        nginx:latest        ManagerX            Shutdown            Shutdown 2 hours ago
xr7pj6d19zq5         \_ my_web.1        nginx:latest        WorkerB             Shutdown            Rejected 2 hours ago      "No such image: nginx:latest"
xbwond9930py         \_ my_web.1        nginx:latest        ManagerX            Shutdown            Rejected 2 hours ago      "No such image: nginx:latest"

2、显示服务的详细信息

docker service inspect my_web

► 附录 1 创建服务时的可选参数

简写 参数 参数类型 描述 默认值
–config config 指定给服务的配置
–constraint list 约束条件
–container-label list 容器标签
–credential-spec credential-spec 托管服务帐户的凭证规范(限Windows)
-d –detach 立即退出,而不是等待服务的收敛
–dns list 设置自定义的 DNS servers
–dns-option list 设置 DNS 参数
–dns-search list 设置自定义的DNS搜索域
–endpoint-mode string 端点模式 (vip or dnsrr) vip
–entrypoint command 覆盖镜像默认的 ENTRYPOINT
-e –env list 设置环境变量
–env-file list 从文件中读取环境变量
–generic-resource list 用户定义的资源
–group list 为容器设置一个或多个不同的用户组
–health-cmd string 检查健康状况的命令行
–health-interval duration 健康检查的时间间隔 (ms/s/m/h)
–health-retries int 报告不健康的连续失败次数
–health-start-period duration 在重新计数到不稳定之前,容器初始化的时间 (ms/s/m/h)
–health-timeout duration 一次检查的最长允许时间 (ms/s/m/h)
–host list 设置一个或多个 host-to-IP 映射 (host:ip)
–hostname string 容器主机名
–isolation string 服务容器隔离模式
-l –label list 服务标签
–limit-cpu decimal CPUs 限制
–limit-memory bytes 内存限制
–log-driver string 服务的日志驱动
–log-opt list 日志驱动参数
–mode string 服务模式 (replicated or global) replicated
–mount mount 将文件系统挂载到服务
–name string 服务名称
–network network 服务网络
–no-healthcheck 禁用任何容器指定的健康检查
–no-resolve-image 不要查询注册表来解决图像摘要和支持的平台
–placement-pref pref 添加偏好设置
-p –publish port 发布一个端口作为节点端口
-q –quiet 简化进度输出
–read-only 将容器的根文件系统挂载为只读
–replicas uint 任务的数量(即容器副本数量) 1
–reserve-cpu decimal 保留 CPUs
–reserve-memory bytes 保留内存
–restart-condition string 重启条件 (“none”、”on-failure”、”any”) any
–restart-delay duration 重启延时(ns/us/ms/s/m/h) 5s
–restart-max-attempts uint 放弃之前的最大重启次数
–restart-window duration 用于评估重新启动策略的窗口(ns/us/ms/s/m/h)
–rollback-delay duration 任务回滚延时(ns/us/ms/s/m/h) 0s
–rollback-failure-action string 回滚失败的操作(“pause”、”continue”) pause
–rollback-max-failure-ratio float 在回滚期间容忍的故障率 0
–rollback-monitor duration 每个任务回滚之后的持续时间以监控失败 (ns/us/ms/s/m/h) 5s
–rollback-order string 回滚顺序 (“start-first”/”stop-first”) stop-first
–rollback-parallelism uint 最大数量的任务同时回滚 (0 代表同时回滚所有) 1
–secret secret 指定给服务的安全机制
–stop-grace-period duration 结束一个容器之前等待的时间 (ns/us/ms/s/m/h) 10s
–stop-signal string 停止容器的信号
-t –tty 分配一个 pseudo-TTY
–update-delay duration 更新延迟时间 (ns/us/ms/s/m/h) 0s
–update-failure-action string 更新失败的动作(“pause”、”continue”、”rollback”) pause
–update-max-failure-ratio float 在更新期间容忍的失败率 0
–update-monitor duration 每个任务更新后的持续时间以监控失败(ns/us/ms/s/m/h) 5s
–update-order string 更新顺序 (“start-first”、”stop-first”) stop-first
–update-parallelism uint 最大数量的任务同时更新(0 代表同时更新所有) 1
-u –user string Username 或 UID (format: <name/uid>[:<group/gid>])
–with-registry-auth 发送认证信息给 Swarm 代理
-w –workdir string 容器内的工作目录

► 附录 2 修改服务的参数

使用如下命令查看,参数属性与附录 1 一致:

docker service update --help
作者:Anoyi

链接:https://www.jianshu.com/nb/7916985

赞(0) 打赏
版权归原创作者所有,任何形式转载请联系作者;码农code之路 » Docker Swarm教程(三):部署服务

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏