docker升级gitlab
昨天在家部署了gitlab,版本居然是15.10,公司版本却是14.6,升级一波。
官方文档:
https://docs.gitlab.com/ee/update/#upgrading-without-downtime
官方文档总结:
文档介绍需要按升级路径拉取镜像。
经我概览,只需备份etc、log、opt三个文件夹,而且都早已挂载在宿主机,无所谓,随便升。
另外,有正在运行的CI/CD作业需要处理一下,因为我的gitlab还没有这些,不能演示,请参考官网。
开始:
#1.查看gitlab当前版本
docker exec -it gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
我这显示14.6.1
#2.上DockerHub查找最新版本
https://hub.docker.com/r/gitlab/gitlab-ce/tags,不要直接拉取latest,因为不会跨版本升级
看了一下,最新版是15.10.3-ce.0,因为我的版本是14.6,需要先升级至14.10.X最新版,再升级至15.0.X最新版,才能再升级至当前最新的15.10.3-ce.0,
至于我是从哪看的,可以自行运行最新镜像,容器会不断重启,看一下log就知道了。
根据搜索记录显示,15.0.X最新版本为:15.0.5-ce.0,14.10.X是14.10.5-ce.0
这个升级路线可以直接docker运行最新镜像查logs,慢慢倒推,也可以自己百度清楚,提前把需要的镜像pull下来,一个2G多,也挺费时间的
#3.查看gitlab容器ID
docker ps
#4.暂停并删除gitlab容器
删除前需确认一下配置文件和数据是否已挂载,一般都会配置挂载路径
docker stop <CONTAINERID>
docker rm <CONTAINERID>
头铁不弄也行,除非你想给容器起不同的名字,用不同的端口号,不然肯定运行不起来
#5.运行gitlab网站14.10.X最新的gitlab镜像
sudo docker run --detach \
--name gitlab \
--restart always \
-p 9080:80 \
-p 9022:22 \
-v /home/gitlab/etc:/etc/gitlab \
-v /home/gitlab/log:/var/log/gitlab \
-v /home/gitlab/opt:/var/opt/gitlab \
gitlab/gitlab-ce:14.10.5-ce.0
注意:没有提前pull也没关系,他会自行拉取gitlab官网的镜像。
注意:既然是升级那挂载目录千万别错了,要跟之前的目录一样。
解释:
sudo:以管理员权限运行,如果是root账号无所谓
--detach:可简写成-d,后台运行
--name:容器名
-v:挂载,左边是宿主机目录,右边是容器内目录
gitlab/gitlab-ce:拉取gitlab的社区版
#6.等待gitlab启动完成
这个时候浏览器访问显示无法访问别慌,输入docker ps,会看到gitlab的状态是starting,等他完成
#7.重复开局步骤查看当前版本
先浏览器访问一下有没有启动成功,我这是成功了。然后查询版本为14.10.5
#8.暂停、删除容器,运行下一版本15.0.X
查看是否启动成功,然后再把容器暂停,删除,运行新版本,命令在第5步,只需把结尾的版本号换一下就行
#9.暂停、删除容器,运行当前最新版本15.10.3-ce.0
再暂停,删除,运行,然后访问页面,root登录,仪表盘查看版本,可以看到版本变成最新的了。至于为啥步骤这么奇怪,必须每个版本都得运行一下,我也不知道,但确实跨版本升级会报错
#10.删除旧版本镜像,释放空间
docker rmi ImageID
结束