docker中的gitlab数据迁移

使用docker部署gitlab之后,数据整体迁移到其他服务器

公司的gitlab原先部署在xxx.xxx.xxx.217服务器的docker上面,目前正常使用,由于服务器内存问题,需将gitlab整体迁移到xxx.xxx.xxx.57服务器的docker

1、初始在217服务器使用docker部署gitlab的时候,已经将gitlab比较重要的数据文件夹挂载到了本地,gitlab的镜像启动命令如下

docker run 
-d
-p 443:443
-p 8000:80
-v /docker/docker-volumes/gitlab/gitlab/config:/etc/gitlab
-v /docker/docker-volumes/gitlab/gitlab/logs:/var/log/gitlab
-v /docker/docker-volumes/gitlab/gitlab/data:/var/opt/gitlab
--name gitlab
--restart always
gitlab/gitlab-ce:latest

-d:容器后台运行

-p:端口号映射

-v:容器中的相关目录挂载到本地

–name:容器命名

–restart always:容器自动启动

用此命令启动容器以后,本地的目录结构如下

[root@ecs-c6f3 gitlab]# pwd
/docker/docker-volumes/gitlab/gitlab
[root@ecs-c6f3 gitlab]# ll
total 12
drwxrwxr-x  3 root   root 4096 Oct 24 18:05 config
drwxr-xr-x 20 root   root 4096 Oct 24 20:12 data
drwxr-xr-x 20 dockerroot root 4096 Oct 24 19:38 logs
[root@ecs-c6f3 gitlab]# 

2、gitlab数据迁移

2.1 在217服务器将整个/docker/docker-volumes/gitlab/gitlab/目录打包,copy到57服务器

2.2 在57服务器安装docker,下载gitlab镜像,用同样的命令启动gitlab

(意思很简单,gitlab本身只是一个镜像文件启动了一个容器,而其中的数据才是最重要的,迁移gitlab其实就是转移gitlab中所有的数据,只需要将原来服务器的所有数据备份在新服务器下,并且使用docker启动新的gitlab容器的时候,将相关的目录与容器下的对应目录相互挂载,新的gitlab容器自动会加载到所有的数据)

3、按照以上步骤启动gitlab以后,发现容器过一段时间之后会自动退出,查看容器日志如下

docker中的gitlab数据迁移_第1张图片
docker中的gitlab数据迁移_第2张图片
docker中的gitlab数据迁移_第3张图片

在日志中提到了
docker exec -it gitlab update-permissions
docker restart gitlab

但是因为权限问题,容器启动之后很快就会关闭,所以执行第一条命令会提示容器未运行
最好的解决办法就是,启动容器之后,迅速执行 docker exec -it gitlab update-permissions ,然后迅速执行docker restart gitlab,就成功了,亲测有效。别等到容器挂了才执行。

你可能感兴趣的:(docker)