Docker Swarm - 部署服务

文/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                           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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342