Docker Swarm 服务版本更新

环境:

  • 系统:Centos 7.4 x64
  • 应用版本:Docker 18.09.0
  • 管理节点:192.168.1.79
  • 工作节点:192.168.1.78
  • 工作节点:192.168.1.77

1、管理节点:创建服务设置更新策略

docker service create \
--replicas 3 \
--name redis \
--update-delay 10s \
--update-parallelism 2 \
--update-failure-action continue \
redis:3.0.6
# 创建命令
docker service create \
# 副本数
--replicas 3 \
# 服务名
--name redis \
# 设定容器间更新时间间隔
--update-delay 10s \
# 更新时同时并行更新数量,默认1
--update-parallelism 2 \
# 任务容器更新失败时的模式 continue为继续使用
--update-failure-action continue \
# 镜像
redis:3.0.6

命令解析

命令:docker service ls
ID NAME MODE REPLICAS IMAGE
v76p9bl941bk redis replicated 3/3 redis:3.0.6

查看添加服务

命令:docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
2pruajw13gud redis.1 redis:3.0.6 slave02 Running Running 4 minutes ago
ma8ait8xcagl redis.2 redis:3.0.6 slave02 Running Running 4 minutes ago
igpwcuyumwzu redis.3 redis:3.0.6 slave01 Running Running 5 minutes ago

查看启动情况

2、管理节点:手动更新服务版本

docker service update --image redis:3.0.7 redis
命令:docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
tio9f89x7fzk redis.1 redis:3.0.7 slave02 Running Running 2 minutes ago
2pruajw13gud \_ redis.1 redis:3.0.6 slave02 Shutdown Shutdown 2 minutes ago
e3fuv9fm202x redis.2 redis:3.0.7 slave01 Running Running 2 minutes ago
ma8ait8xcagl \_ redis.2 redis:3.0.6 slave02 Shutdown Shutdown 2 minutes ago
zku5h3h4dqkn redis.3 redis:3.0.7 slave01 Running Running 2 minutes ago
igpwcuyumwzu \_ redis.3 redis:3.0.6 slave01 Shutdown Shutdown 3 minutes ago

查看更新情况

docker service inspect redis
[
{
"ID": "v76p9bl941bk87pwwk3nvtwfe",
"Version": {
"Index": 1479
},
"CreatedAt": "2018-11-07T06:19:23.210686656Z",
"UpdatedAt": "2018-11-07T06:30:53.565888582Z",
"Spec": {
# 服务名称
"Name": "redis",
"TaskTemplate": {
"ContainerSpec": {
# 服务镜像
"Image": "redis:3.0.7@sha256:730b765df9fe96af414da64a2b67f3a5f70b8fd13a31e5096fee4807ed802e20",
"DNSConfig": {}
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"RestartPolicy": {
"Condition": "any",
"MaxAttempts": 0
},
"Placement": {},
"ForceUpdate": 0
},
"Mode": {
# 模式
"Replicated": {
# 副本数
"Replicas": 3
}
},
# 服务更新时应用策略
"UpdateConfig": {
# 同时更新任务数
"Parallelism": 1,
# 更新间隔时间
"Delay": 10000000000,
# 更新失败后动作 pause暂停
"FailureAction": "pause",
# 更新失败后继续运行半分比
"MaxFailureRatio": 0
},
"EndpointSpec": {
# 默认分配1个虚拟IP
"Mode": "vip"
}
},
"PreviousSpec": {
"Name": "redis",
"TaskTemplate": {
"ContainerSpec": {
"Image": "redis:3.0.6@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842",
"DNSConfig": {}
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"RestartPolicy": {
"Condition": "any",
"MaxAttempts": 0
},
"Placement": {},
"ForceUpdate": 0
},
"Mode": {
"Replicated": {
"Replicas": 3
}
},
"UpdateConfig": {
"Parallelism": 1,
"Delay": 10000000000,
"FailureAction": "pause",
"MaxFailureRatio": 0
},
"EndpointSpec": {
"Mode": "vip"
}
},
"Endpoint": {
"Spec": {}
},
"UpdateStatus": {
"State": "completed",
"StartedAt": "2018-11-07T06:29:00.44192283Z",
"CompletedAt": "2018-11-07T06:30:53.56587273Z",
"Message": "update completed"
}
}
]

查看服务详细信息

注:升级过程,按顺序停止一个容器任务去对这个停止的任务进行更新,最后更新为running状态,再继续往下更新其他容器任务,如果更新失败它会暂停更新,切换到下一个容器任务继续更新直到所有容器。


Docker Swarm 服务版本回滚

1、管理节点:创建服务时设定回滚策略

docker service create \
--name my_web \
--replicas 10 \
--rollback-parallelism 2 \
--rollback-monitor 20s \
--rollback-max-failure-ratio .2 \
nginx:1.12
# 创建服务
docker service create \
# 服务名
--name my_web \
# 副本数
--replicas 10 \
# 同时执行回滚数动作
--rollback-parallelism 2 \
# 每次容器与容器之间的回滚时间间隔
--rollback-monitor 20s \
# 回滚故障率如果小于百分比允许运行
--rollback-max-failure-ratio .2 \
# 使用镜像
nginx:1.12

命令解析

命令:docker service ps -f "DESIRED-STATE=running" my_web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
bgqpm1s0a24l my_web.1 nginx:1.12 slave01 Running Running about a minute ago
jttvdgzpiz02 my_web.2 nginx:1.12 slave01 Running Running about a minute ago
t8yqfrzoa7fj my_web.3 nginx:1.12 slave02 Running Running about a minute ago
xgh712gi2eld my_web.4 nginx:1.12 slave02 Running Running about a minute ago
2tnw3tnofyn5 my_web.5 nginx:1.12 slave01 Running Running about a minute ago
on4khcpkb2h7 my_web.6 nginx:1.12 slave02 Running Running about a minute ago
gxdeqfbmq60k my_web.7 nginx:1.12 slave01 Running Running about a minute ago
kmyz0btgb0hk my_web.8 nginx:1.12 slave02 Running Running about a minute ago
lso2ry7f2v0o my_web.9 nginx:1.12 slave01 Running Running 2 minutes ago
ee21b2ud0mkk my_web.10 nginx:1.12 slave02 Running Running about a minute ago

查看创建服务

2、管理节点:更新服务提升一个版本

docker service update --image nginx:1.13 my_web
docker service ps -f "DESIRED-STATE=running" my_web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
bgqpm1s0a24l my_web.1 nginx:1.13 slave01 Running Running about a minute ago
jttvdgzpiz02 my_web.2 nginx:1.13 slave01 Running Running about a minute ago
t8yqfrzoa7fj my_web.3 nginx:1.13 slave02 Running Running about a minute ago
xgh712gi2eld my_web.4 nginx:1.13 slave02 Running Running about a minute ago
2tnw3tnofyn5 my_web.5 nginx:1.13 slave01 Running Running about a minute ago
on4khcpkb2h7 my_web.6 nginx:1.13 slave02 Running Running about a minute ago
gxdeqfbmq60k my_web.7 nginx:1.13 slave01 Running Running about a minute ago
kmyz0btgb0hk my_web.8 nginx:1.13 slave02 Running Running about a minute ago
lso2ry7f2v0o my_web.9 nginx:1.13 slave01 Running Running 2 minutes ago
ee21b2ud0mkk my_web.10 nginx:1.13 slave02 Running Running about a minute ago

查看更新服务

3、管理节点:手动回滚到上一个版本

docker service update --rollback my_web
命令:docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
nikder7y06o2 my_web replicated 10/10 nginx:1.12

查看回滚版本

Docker Swarm 服务版本更新与回滚的更多相关文章

  1. 基于 Consul 的 Docker Swarm 服务发现

    Docker 是一种新型的虚拟化技术,它的目标在于实现轻量级操作系统的虚拟化.相比传统的虚拟化方案,Docker 虚拟化技术有一些很明显的优势:启动容器的速度明显快于传统虚拟化技术,同时创建一台虚拟机 ...

  2. Docker Kubernetes 容器更新与回滚

    Docker Kubernetes 容器更新与回滚 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 管理节点:192.168.1.79 ...

  3. 【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本

    小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...

  4. Docker Swarm 服务编排之命令

    一.简介 Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编排在一起,同时管理.同样在Swarm集群中,可以使用docker stack 将一组相关联的服 ...

  5. k8s用kubectl管理应用升级,服务发布与回滚,扩缩容

    应用升级 Kubectl set image --help 有案例指定新版本 [root@k8s-master ~]# kubectl set image deployment/nginx nginx ...

  6. jenkinsfile or pipline 实现微服务自动发布回滚流程

    1 #!/usr/bin/env groovy Jenkinsfile node { //服务名称 def service_name = "**" //包名 def service ...

  7. Docker Swarm 常用命令

    # 管理配置文件 docker config     # 查看已创建配置文件     - docker config ls     # 将已有配置文件添加到docker配置文件中     - dock ...

  8. Docker Swarm集群部署

    一.系统环境 1)服务器环境 节点名称 IP 操作系统 内核版本 manager 172.16.60.95 CentOs7 4.16.1-1.el7.elrepo.x86_64 node-01 172 ...

  9. docker swarm英文文档学习-10-使用Docker密钥管理敏感数据

    Manage sensitive data with Docker secrets使用Docker secrets管理敏感数据 About secrets 对于Docker Swarm服务来说,sec ...

随机推荐

  1. Oracle误删除数据的恢复方法(转)

    来源:原创网站北京北亚数据恢复中心,转载须注明出处. 学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失.当我在工作中真正遇到这些 ...

  2. ganglia-gmond.conf配置文件

    运行下列命令可以生成gmond默认配置文件: User@host:$ gmond -t 配置文件由大括弧括起来的几个section组成.这些section可以粗略划分为两个逻辑分类.第一类中的sect ...

  3. Bash script set help function

    set -o nounset help() { cat <<- EOF Desc: execute f1x for each case in Codeflaws Usage: ./exec ...

  4. upstream模块介绍

    upstream模块介绍 Nginx的负载均衡功能依赖于ngx_http_upsteam_module模块,所支持的代理方式包括proxy_pass.fastcgi_pass.memcached_pa ...

  5. 布局fixed和sticky

    sticky非常非常非常好用怎么用看代码: 这里为什么没有设置高度呢,因为这个高度应该是浏览器高度,浏览器高度在时刻变化怎么办? js处理: 此JS里面会有执行方法一步一步看 这个里面有JS方法 这个 ...

  6. ubuntu14.04 LTS 更新国内网易163源

    2015/10/7 更改ubuntu的默认源是linux学习中必须掌握的基础技能.在此记录,以作参考. 在ubuntu14.04 LTS默认使用的是国外源,由于网络的原因,使用apt-get安装包时异 ...

  7. ASP.NET常见异常处理示例

    将指定的年月日转初始化为DateTime新的实例(Nop.Admin.Controllers.OrderController.ParseProductAttributes) case Attribut ...

  8. Gym 101194L / UVALive 7908 - World Cup - [三进制状压暴力枚举][2016 EC-Final Problem L]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...

  9. [No0000C6]Visual Studio 2017 函数头显示引用个数

    Visual Studio 2017  函数头显示引用个数

  10. emoji表情softbank和unicode不兼容解决方案

    https://blog.ernest.me/post/emoji-remapping-solution