背景
公司买了个ECS,我先装了Docker,部署了gitlab,发现装在的系统盘,需要迁移到另外挂载的数据盘里。
记录过程以备后面使用。
过程
#查看当前正在运行的容器
docker ps -q
#停止所有正在运行的容器
docker stop $(docker ps -q)
#查看当前所有容器
docker ps -a
#提交到image,
#这步后来发现可以省略,因为docker所有文件包括容器的所有文件都移过去了,转移后可以直接运行
docker commit contos7.9_ssh_zbox image_cent0s7.9_ssh_zbox
#查看docker信息 获得 Storage Driver和Docker Root Dir
docker info
#我这里得到的是 /var/lib/docker和overlay2
#停止docker运行
systemctl stop docker.service
#查看docker运行状体,确认已经停止工作
systemctl status docker.service
#把镜像文件拷贝到新文件夹,这个用的时间还挺久
#第一次用了 cp -r ,拷完了运行各种报错权限不够,一看很多文件所有者都变成root了
mkdir -p /home/lib/
rsync -r -avz /var/lib/docker /home/lib/
#一边拷贝一边改文件
#改/etc/docker/daemon.json
#增加"data-root"
{
“registry-mirrors”: [“http://hub-mirror.c.163.com”],
“data-root”: “/home/lib/docker”
}
#好多文章说要改/etc/systemd/system/multi-user.target.wants/docker.service
#要把ExecStart这一行改成ExecStart=/usr/bin/dockerd --graph=/home/docker --storage-driver=overlay2
#实测之后总是重启服务失败,提示说不认识参数–graph=,查了下说是新版升级了所以不认识,也有说两个配置文件改一个就行,索性就把docker.service还原了,相当于是没改这个文件直接重启了服务也成功了
#重启 docker 服务
systemctl daemon-reload
systemctl restart docker
systemctl status docker
#检查docker信息是用的 “/home/lib/docker”
docker info
#重启容器,如果容器已经设置了–restart=always就会自动启动
#搞定~