1.原服务器上docker镜像的打包
#打包gitlab
docker save -o gitlab.tar sameersbn/gitlab:v1
#打包postgresql
docker save -o postgresql.tar sameersbn/postgresql:11-20200524
#打包redis
docker save -o redis.tar sameersbn/redis:4.0.9-2
#xxx.tar 打包后的名称 xxxxx:xxxxx服务器上镜像的名称加tag
2.备份gitlab数据
docker exec -it gitlab bash
./entrypoint.sh app:rake gitlab:backup:create
#备份的数据在gitlab的backups目录下
3.拷贝打包的镜像和备份的数据到本地上传目标服务器或者直接scp传输到要目标服务器
#1.如果同一网段,直接通过scp命令进行远程传输。
scp -r gitlab.tar root@192.168.17.2:/usr/local/src/
scp -r redis.tar root@192.168.17.2:/usr/local/src/
scp -r postgresql.tar root@192.168.17.2:/usr/local/src/
scp -r 1658646457_2022_07_24_13.5.3_gitlab_backup.tar root@192.168.17.2:/usr/local/src/
#scp -r 文件 用户名@地址:路径
#2.不同网段,需要先传输到本地,再进行上传到另一台服务器
4.加载镜像
docker load -i gitlab.tar
docker load -i redis.tar
docker load -i postgresql.tar
5.创建时区文件
echo 'Asia/Shanghai' > /etc/timezone
6.启动gitlab-postgresql 192.168.17.2 这个ip要改为服务器的IP
docker run --name gitlab-postgresql --privileged \
--restart=always -e TZ=Asia/Shanghai \
-v /etc/timezone:/etc/timezone -d \
-p 5432:5432 \
--env 'DB_HOST=192.168.17.2' \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' \
--env 'DB_PASS=Xw599wb20H4jHIh9' \
--env 'DB_EXTENSION=pg_trgm,btree_gist' \
--volume /srv/gitlab/postgresql:/var/lib/postgresql \
sameersbn/postgresql:11-20200524
7.启动 gitlab-redis
docker run --name gitlab-redis \
--privileged --restart=always \
-p 6379:6379 \
-e TZ=Asia/Shanghai \
-v /etc/timezone:/etc/timezone -d \
--volume /srv/gitlab/redis:/var/lib/redis \
sameersbn/redis:4.0.9-2
8.启动 gitlab 192.168.17.2 这个ip要改为服务器的IP
docker run --name gitlab \
-e TZ=Asia/Shanghai \
--privileged --restart=always \
-v /etc/timezone:/etc/timezone -d \
--publish 10022:22 --publish 8090:80 \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' \
--env 'DB_PASS=Xw599wb20H4jHIh9' \
--env 'DB_EXTENSION=pg_trgm' \
--env 'DB_HOST=192.168.17.2' \
--env 'REDIS_HOST=192.168.17.2' \
--env 'REDIS_PORT=6379' \
--env 'GITLAB_PORT=80' \
--env 'GITLAB_SSH_PORT=10022' \
--env 'GITLAB_SECRETS_DB_KEY_BASE=iwYPxsBTAjQZX47hq3xHEOcAyukJRK' \
--env 'GITLAB_SECRETS_SECRET_KEY_BASE=iMrzozMfEaIO53M0q0MMtQtulESTAd' \
--env 'GITLAB_SECRETS_OTP_KEY_BASE=1by1Ev1lcKna1sGnfE4d24XrkwMcy7' \
--env 'GITLAB_HOST=192.168.17.2' \
--env 'GITLAB_BACKUP_SCHEDULE=daily' \
--env 'GITLAB_BACKUP_TIME=03:00' \
--volume /srv/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:13.5.3
9.恢复
docker exec -it gitlab bash
./entrypoint.sh app:rake gitlab:backup:restore BACKUP=1658646457_2022_07_24_13.5.3