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 ...
随机推荐
- OpenGL step by step 38 : Skeletal Animation with Assimp
一般骨架模型由两部分组成: Rigging(bone):相当于骨架,可以用来控制模型的动作 Mesh(skin):相当于表面皮肤 骨架模型一般是层级结构的,比如上面 背骨是root,他的孩子包括胳膊. ...
- <转>从K近邻算法、距离度量谈到KD树、SIFT+BBF算法
转自 http://blog.csdn.net/likika2012/article/details/39619687 前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章待写:1.KD树:2.神经 ...
- [VS SVN] VS的SVN插件AnkhSvn
VS的SVN插件AnkhSvn 修改VS配置 将解决方案或项目加入SVN管理
- Bash 脚本 去除注释
sed -i "/^#/d;/^ *$/d" /etc/squid/squid.conf
- C++常用的文件操作路径函数
shlwapi.dll中的实用API函数发布 在windows system目录下有这个动态链接库 BOOL PathFileExists(LPCTSTR lpszPath)功能:检查文件/路径 ...
- Map 的putAll方法
如下段代码: public static void main(String[] args){ Map<String,String> map1 = new HashMap<>() ...
- ASP.NET Core 中读取 Request.Body 的正确姿势
ASP.NET Core 中的 Request.Body 虽然是一个 Stream ,但它是一个与众不同的 Stream —— 不允许 Request.Body.Position=0 ,这就意味着只能 ...
- ubuntu 16.04 安装和配置vncserver
https://www.linode.com/docs/applications/remote-desktop/install-vnc-on-ubuntu-16-04/#connect-to-vnc- ...
- 最全的MonkeyRunner自动化测试从入门到精通(10)
三.MonkeyRunner复杂的功能开始学习 (1)获取APK文件中ID的两种方式 Monkeyrunner的环境已经搭建完成,现在对Monkeyrunner做一个简介. Monkeyrunner工 ...
- soapui调用redis,获取短信验证码
1.首先,调用redis需要引入redis的jar包,放入到soapui指定目录中,例如我的目录D:\Program Files\SmartBear\SoapUI-Pro-5.1.2\bin\ext ...