Docker Swarm 服务版本更新与回滚
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 服务版本更新与回滚的更多相关文章
- 基于 Consul 的 Docker Swarm 服务发现
Docker 是一种新型的虚拟化技术,它的目标在于实现轻量级操作系统的虚拟化.相比传统的虚拟化方案,Docker 虚拟化技术有一些很明显的优势:启动容器的速度明显快于传统虚拟化技术,同时创建一台虚拟机 ...
- Docker Kubernetes 容器更新与回滚
Docker Kubernetes 容器更新与回滚 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 管理节点:192.168.1.79 ...
- 【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本
小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...
- Docker Swarm 服务编排之命令
一.简介 Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编排在一起,同时管理.同样在Swarm集群中,可以使用docker stack 将一组相关联的服 ...
- k8s用kubectl管理应用升级,服务发布与回滚,扩缩容
应用升级 Kubectl set image --help 有案例指定新版本 [root@k8s-master ~]# kubectl set image deployment/nginx nginx ...
- jenkinsfile or pipline 实现微服务自动发布回滚流程
1 #!/usr/bin/env groovy Jenkinsfile node { //服务名称 def service_name = "**" //包名 def service ...
- Docker Swarm 常用命令
# 管理配置文件 docker config # 查看已创建配置文件 - docker config ls # 将已有配置文件添加到docker配置文件中 - dock ...
- Docker Swarm集群部署
一.系统环境 1)服务器环境 节点名称 IP 操作系统 内核版本 manager 172.16.60.95 CentOs7 4.16.1-1.el7.elrepo.x86_64 node-01 172 ...
- docker swarm英文文档学习-10-使用Docker密钥管理敏感数据
Manage sensitive data with Docker secrets使用Docker secrets管理敏感数据 About secrets 对于Docker Swarm服务来说,sec ...
随机推荐
- 在iPhone手机上写了input type="date" 显示不出来的原因
在iPhone手机上写了input type="date" 显示不出来的原因 今天在手机页面上使用新的input类型,这样子写,在chrome浏览器上浏览,很好,显示出来.然后用i ...
- Ext-JS-Modern-Demo 面向移动端示例
基于Ext Js 6.5.2 面向移动端示例,低于此版本可能存在兼容问题,慎用 已忽略编译目录,请自行编译运行 Sencha Cmd 版本:v6.5.2.15 git地址:https://github ...
- tomcat启动出错 invalid LOC header
tomcat启动出错 invalid LOC header,run as maven test 没有报错,只有警告: 'build.plugins.plugin.version' for org.ap ...
- a排兵布阵
来源hdu1166 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵 ...
- 28、gulp
一.gulp的作用? 1.gulp-sass : 编译sass 2.gulp-rename : 重命名 3.gulp-cssnano : 压缩css 4.gulp-concat : 合并文件 5.gu ...
- PHP(Dom操作的一些基础)
重点!! //DOM操作: // 核心思想:找到元素 操作元素// js找元素 会返回元素对象:// document.getElementById("dd");唯一确定// 返回 ...
- Python学习之旅(二十四)
Python基础知识(23):进程和线程(Ⅱ) 一.threadlocal 在多线程环境下,每个线程都有自己的数据 一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响 ...
- iOS 弹出菜单UIMenuController的基本使用
UIMenuController,弹出菜单@implementation DragView{ CGPoint startLocation; CGFloat rotation;}-(inst ...
- C和C指针小记(十八)-使用结构和指针-双向链表
1.双链表 1.1 双向链表的声明 在一个双链表中,每个节点都包含两个指针--指向前一个节点的指针和指向后一个节点的指针. 声明 typedef struct NODE { struct NODE * ...
- ES6 Map 与 Set
Map 对象 Map 对象保存键值对.任何值(对象或者原始值) 都可以作为一个键或一个值. Maps 和 Objects 的区别 一个 Object 的键只能是字符串或者 Symbols,但一个 Ma ...