实验室服务器安装docker时全部默认安装了,使用一段时间后发现docker存储容器镜像的路径默认安装在/var/lib/docker中,服务器一共有两块盘,一块为1T作系统盘,一块16T挂载于/data,为避免后期docker占满 / ,所以要迁移docker默认的存储路径

一、查看当前docker的默认存储目录

docker info


二、停止docker服务

service docker stop

这样做有可能会报错
Warning: Stopping docker.service, but it can still be activated by:   docker.socket

解决办法:
systemctl stop docker.socket
systemctl stop docker


三、目录迁移

3.1 先备份原有的docker(cp)

3.2 复制/var/lib/docker到你指定的目录

cp -r /var/lib/docker /data

我的docker目录已经有三百多个G了,复制很慢,可以使用
du -sh /var/lib/docker
du -sh /data/docker
来查看两个文件的大小,可以变相的感知复制进度,不然cp没个进度条,急死人

3.3 修改docker配置文件

vim /etc/docker/daemon.json

如果没有这个文件,可以直接创建
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"], //这个是docker源,配不配随意
  "data-root": "/data/docker"  //这个后面的路径改成你自己的
}

3.4、保存退出,然后重启 docker 服务

service docker start


3.5、检查docker存储路径是否配置成功

docker info

发现这个就好了
Docker Root Dir: 你的路径

3.6、启动成功后,再确认之前的镜像还在

docker ps -a
docker images


四、确定容器、镜像没问题后删除/var/lib/docker

rm -rf /var/lib/docker/*

这里有可能会报错

rm: cannot remove '/var/lib/docker/overlay2/cb30f7f2cf36ad8782bcd0f9c66aa976de7baabf1165729bf620a057f2c1daf8/merged': Device or resource busy
————————————————

 这个问题是由于docker容器在创建的时候使用了网络挂载啥的,解决方法参考

无法删除docker目录(rm: 无法删除"/var/lib/docker/overlay/XXXXXXXXXXXXXX/merged": 设备或资源忙)_rm: 无法删除"docker/overlay2/da6581226d69cd7bb1c03fa23-CSDN博客

统统卸载后,再执行删除

五.docker exec 启动容器报错

不太懂这个原因,但是解决方法是docker restart 你的容器,然后就一切正常啦,也欢迎各路大神告诉真实原因啊,应该是那里的配置文件没有改吧

参考文章:Docker 修改默认存储路径_docker修改默认的存储路径_docker修改存储路径_ascarl2010的博客-CSDN博客

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐