假设背景是升级docker27版本。

1.下载docker27版本的安装包

docker27版本安装包链接为59.111.178.240:20280/docker_installer/docker_installer.centos.docker27.sh

下载好后传到生产环境的2台服务器上,目录没有要求。

2. 检查docker的数据目录

以下操作2台服务器都需要检查

docker info #查看docker信息,有root dir数据目录的信息

cat /etc/docker/daemon.json #查看docker数据目录信息,是否和docker info中显示得一致

如果没有这个文件,手动创建daemon.json

vim /etc/docker/daemon.json

内容如下,假设docker info中的数据目录是/Netease/docker

{

"data-root": "/Netease/docker"

}

上述操作是为了保留docker的数据信息,比如镜像,swarm节点信息等等,必须要做

3.有数停服以及数据库数据备份

停服命令

docker service scale ydswarm_web=0

docker service scale ydswarm_schedule=0

业务数据库用的是自己的,业务自行备份数据

4.删除堆栈服务

docker stack ls #查看服务堆栈

docker stack rm ydswarm #将有数服务堆栈删除

如果有log和monitor堆栈,执行以下命令

docker stack rm log

docker stack rm monitor

5.docker版本升级

两台机器都需要操作

进入之前传过的docker_installer.centos.docker26.sh安装包目录

假设放在了/youdata/installer目录

cd /youdata/installer

./docker_installer.centos.docker26.sh uninstall

卸载docker26版本

如果不知道放哪了,find / -name 'docker_installer.centos.docker26.sh'

知道存放目录之后再执行上面的卸载操作

docker卸载完成之后,再安装27版本的docker

假设第一步的安装包放在了/youdata/installer下

cd /youdata/installer

chomd +x docker\_installer.centos.docker27.sh

./docker\_installer.centos.docker27.sh install

安装完成之后,验证docker版本以及节点信息

docker --version

docker node ls

docker info

6.启动有数服务

两台机器都升级为27版本docker之后,启动有数服务,主节点执行即可

cd /youdata/installer

docker stack deploy -c docker-stack.ydswarm815.yaml ydswarm

启动完成后,验证下

docker service ls #看下服务是否都启动完成

如果有log和monitor服务,也启动下

docker stack deploy -c docker-stack.log.yaml log

docker stack deploy -c docker-stack.monitor.yaml monitor