Docker升级、数据目录变更的注意事项和操作步骤:避免出现权限问题导致返工,增加时间和人力维护成本

私有部署 明道云私有部署版本升级  收藏
0 / 523

易出问题点:
第一步和最后一步必须要做,原因是避免迁移 docker 数据目录和升级 docker 版本后老镜像启动容器时候出现权限问题(一般发生在 sc 容器内 Elasticsearch 和 doc 容器 pg/rabbitmq 上)

接下来上操作步骤:

一、Docker 数据目录变更(或部署方式变更)

第一步:记录一下镜像版本号(便于重新拉取镜像),然后删除所有镜像(community、doc、sc、command)

docker rmi 镜像ID

第二步:停掉当前 docker 环境(这里为避免操作过程中其他原因服务器重启导致 docker 开机自启)

systemctl stop docker docker-ce && systemctl disable docker

第三步:清理 docker 服务启动文件(这里以清理 yum 安装的 docker 环境为例)

重命名进行备份 
mv /usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.service.bak.old
或直接删除
rm /usr/lib/systemd/system/docker.service

第四步:清理 docker 可执行文件(有时候 docker version 中显示 client 版本和 server 版本不同,就是这里没清理或覆盖的原因)

rm /usr/bin/docker
rm /usr/bin/dockerd

第五步:迁移数据目录到指定数据盘(/data/),也可以直接删除 docker 数据目录(删除的话建议做下备份)

迁移:
mv /var/lib/docker /data/
删除:
rm -rf /var/lib/docker
备份:
cp -r /var/lib/docker /data/docker.bak.old

第六步:安装新版本 docker

参考 Docker 安装

第七步:复制 docker 可执行文件到/usr/bin/目录

cp /usr/local/bin/docker /usr/bin/docker
cp /usr/local/bin/dockerd /usr/bin/dockerd
chmod +x /usr/bin/docker
chmod +x /usr/bin/dockerd

第八步:设置开机自启并启动 docker

systemctl enable docker
systemctl start docker
systemctl status docker
docker version

第九步:根据第一步记录的镜像版本号,重新拉取镜像到服务器

docker pull ${repo_name}:${version}

二、Docker 升级(基于一的部署结果状态;这里以升级至 docker24.0.9 版本为例)

第一步:记录一下镜像版本号(便于重新拉取镜像),然后删除所有镜像(community、doc、sc、command)

docker rmi 镜像ID

第二步:停掉当前 docker 环境

systemctl stop docker

第三步:备份数据目录到指定数据盘(/data/)

cp -r /data/docker /data/docker.bak.`date '+%Y%m%d%H%M%S'`

第四步:清理 docker 可执行文件(有时候 docker version 中显示 client 版本和 server 版本不同,就是这里没清理或覆盖的原因)

rm /usr/bin/docker
rm /usr/bin/dockerd

第五步:Docker 安装以及配置文件覆盖

参考 Docker 安装

第六步:复制 docker 可执行文件到/usr/bin/目录

cp /usr/local/bin/docker /usr/bin/docker
cp /usr/local/bin/dockerd /usr/bin/dockerd
chmod +x /usr/bin/docker
chmod +x /usr/bin/dockerd

第七步:启动 docker

systemctl start docker
systemctl status docker
docker version

第八步:根据第一步记录的镜像版本号,重新拉取镜像到服务器

docker pull ${repo_name}:${version}