之前公司在 Windows 系统中通过 WSL(Ubuntu) 搭建了一个 GitLab 服务,用于代码库管理,但在 Windows 电脑上的东西越来越多,GitLab 服务经常会出现 502 错误,搜索资料推测是系统内存不足导致。
最近,好不容易在公司资产垃圾堆中通过3台废旧电脑凑了一台能用的,于是在上面安装 Ubuntu 系统,还跑起了 Docker。打算把开发相关的服务跑上一套,已经在上面运行了 Postgre、MySQL、Redis 和文件服务器。想顺便也把 Git 服务不稳定的问题解决一下。
过程
Docker 运行 GitLab 服务
拉取镜像
因为老服务中使用的 GitLab 版本为 17.1.0,所以这里也运行相同的版本,否则有版本不兼容的问题。
在国内直接拉取官方镜像会因为网络问题报错,所以要么上点儿科技手段,要么通过镜像或代理站进行拉取。
docker pull dockerproxy.net/gitlab/gitlab-ce:17.1.0-ce.0在宿主机创建详情文件夹
sudo mkdir -p /data_hd/docker/gitlab/{config,logs,data}创建并运行容器
docker run -d \
--hostname gitlab \
--publish 8888:80 \
--publish 4443:443 \
--publish 2222:22 \
--name gitlab \
--restart always \
--volume /data_hd/docker/gitlab/config:/etc/gitlab \
--volume /data_hd/docker/gitlab/logs:/var/log/gitlab \
--volume /data_hd/docker/gitlab/data:/var/opt/gitlab \
dockerproxy.net/gitlab/gitlab-ce:17.1.0-ce.0代码库迁移
备份
创建备份,运行下面的命令,等待完成。
sudo gitlab-rake gitlab:backup:create运行命令后会输出很多信息,其中包括类似1793601900_2026_11_02_17.1.0_gitlab_backup.tar这样的备份文件名,可以通过如下命令查找备份文件位置,我这里最终是在/var/opt/gitlab/backups/找到了备份文件。
sudo find / -type f -name 1793601900_2026_11_02_17.1.0_gitlab_backup.tar恢复
拷贝文件
将备份文件放在宿主机的 /data_hd/docker/gitlab/data/backups 文件夹下。
从备份文件恢复
进入 Docker 容器中
docker exec -i -t gitlab /bin/bash恢复备份(这里不要写备份的文件名,而是要去掉后缀等信息)如下,感谢《docker中gitlab迁移》作者凌冽暖阳
gitlab-rake gitlab:backup:restore BACKUP=/var/opt/gitlab/backups/1793601900_2026_11_02_17.1.0停止相关数据链接
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq重启
gitlab-ctl restart参考
国内可用Docker镜像源加速器/DockerHub镜像汇总
Docker Proxy
Docker 部署 GitLab CE 完整版教程
docker中gitlab迁移
