欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

16-Docker service更新

程序员文章站 2022-05-28 11:32:11
...

serive更新其实并不是简单的更新,在swarm模式下的service都是在运行的,正在运行的进行更新,swarm是生产环境,我们不想因为更新中断咱们的业务,想的是不影响正常的业务开展。在现实生产环境进行不宕机的更新远比现在咱们这种要复杂的多的多,这里演示可能稍微简单,只是让大家明白一个思路。

1. 创建overlay网络

必须创建overlay的network

 docker network create -d overlay demo

2. 创建和升级servie

先创建一个service,从hub中拉取1.0版本,然后扩展service里面的容器数量为2,通过shell脚本的方式访问容器返回结果,然后将拉取1.0的版本升级为2.0版本,查看shell访问的返回是否中断。

2.1 拉取1.0版本

docker service create --name web -p 8080:5000 --network demo xiaopeng163/python-flask-demo:1.0
docker service ls
docker service ps web

2.2 scale扩展容器数量

service要不中断服务更新,必须保证service至少有2个,用scale横向扩展web

docker service scale web=2
docker service ls
docker service ps web

2.3 监控升级过程

在一个节点上编写shell脚本,每隔1秒访问一次服务,升级过程中查看打印输出情况

sh -c "while true;do curl 127.0.0.1:8080&&sleep 1;done"

2.4 升级至2.0

docker service update --image xiaopeng163/python-flask-demo:2.0 web
#1.0已经shutdown了,启动了2.0
docker service ps web

观察shell脚本的访问情况,发现中间没有发生中断操作

3. 更新端口

docker service update --publish-rm 8080:5000 --publish-add 8088:5000 web
docker service ps web
docker service  web

端口更新存在业务中断的情况