为了账号安全,请及时绑定邮箱和手机立即绑定

Docker Swarm 入门:Service 部署

标签:
Docker

webp

文/Anoyi

前言介绍

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                           PORTSsjvogfokaeqk        my_web.1            nginx:latest        WorkerA             Running             Running 10 minutes agovezxfvtdpsul         \_ my_web.1        nginx:latest        ManagerX            Shutdown            Shutdown 11 minutes agoxi1xrzu9qrkt         \_ my_web.1        nginx:latest        ManagerX            Shutdown            Shutdown 2 hours agoxr7pj6d19zq5         \_ 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 创建服务时的可选参数

简写参数参数类型描述默认值

--configconfig指定给服务的配置

--constraintlist约束条件

--container-labellist容器标签

--credential-speccredential-spec托管服务帐户的凭证规范(限Windows)
-d--detach
立即退出,而不是等待服务的收敛

--dnslist设置自定义的 DNS servers

--dns-optionlist设置 DNS 参数

--dns-searchlist设置自定义的DNS搜索域

--endpoint-modestring端点模式 (vip or dnsrr)vip

--entrypointcommand覆盖镜像默认的 ENTRYPOINT
-e--envlist设置环境变量

--env-filelist从文件中读取环境变量

--generic-resourcelist用户定义的资源

--grouplist为容器设置一个或多个不同的用户组

--health-cmdstring检查健康状况的命令行

--health-intervalduration健康检查的时间间隔 (ms/s/m/h)

--health-retriesint报告不健康的连续失败次数

--health-start-periodduration在重新计数到不稳定之前,容器初始化的时间 (ms/s/m/h)

--health-timeoutduration一次检查的最长允许时间 (ms/s/m/h)

--hostlist设置一个或多个 host-to-IP 映射 (host:ip)

--hostnamestring容器主机名

--isolationstring服务容器隔离模式
-l--labellist服务标签

--limit-cpudecimalCPUs 限制

--limit-memorybytes内存限制

--log-driverstring服务的日志驱动

--log-optlist日志驱动参数

--modestring服务模式 (replicated or global)replicated

--mountmount将文件系统挂载到服务

--namestring服务名称

--networknetwork服务网络

--no-healthcheck
禁用任何容器指定的健康检查

--no-resolve-image
不要查询注册表来解决图像摘要和支持的平台

--placement-prefpref添加偏好设置
-p--publishport发布一个端口作为节点端口
-q--quiet
简化进度输出

--read-only
将容器的根文件系统挂载为只读

--replicasuint任务的数量(即容器副本数量)1

--reserve-cpudecimal保留 CPUs

--reserve-memorybytes保留内存

--restart-conditionstring重启条件 ("none"、"on-failure"、"any")any

--restart-delayduration重启延时(ns/us/ms/s/m/h)5s

--restart-max-attemptsuint放弃之前的最大重启次数

--restart-windowduration用于评估重新启动策略的窗口(ns/us/ms/s/m/h)

--rollback-delayduration任务回滚延时(ns/us/ms/s/m/h)0s

--rollback-failure-actionstring回滚失败的操作("pause"、"continue")pause

--rollback-max-failure-ratiofloat在回滚期间容忍的故障率0

--rollback-monitorduration每个任务回滚之后的持续时间以监控失败 (ns/us/ms/s/m/h)5s

--rollback-orderstring回滚顺序 ("start-first"/"stop-first")stop-first

--rollback-parallelismuint最大数量的任务同时回滚 (0 代表同时回滚所有)1

--secretsecret指定给服务的安全机制

--stop-grace-periodduration结束一个容器之前等待的时间 (ns/us/ms/s/m/h)10s

--stop-signalstring停止容器的信号
-t--tty
分配一个 pseudo-TTY

--update-delayduration更新延迟时间 (ns/us/ms/s/m/h)0s

--update-failure-actionstring更新失败的动作("pause"、"continue"、"rollback")pause

--update-max-failure-ratiofloat在更新期间容忍的失败率0

--update-monitorduration每个任务更新后的持续时间以监控失败(ns/us/ms/s/m/h)5s

--update-orderstring更新顺序 ("start-first"、"stop-first")stop-first

--update-parallelismuint最大数量的任务同时更新(0 代表同时更新所有)1
-u--userstringUsername 或 UID (format: <name/uid>[:<group/gid>])

--with-registry-auth
发送认证信息给 Swarm 代理
-w--workdirstring容器内的工作目录

附录 2 修改服务的参数

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

docker service update --help



作者:Anoyi
链接:https://www.jianshu.com/p/a3a83f236c85


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
205
获赞与收藏
1007

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消