一、查看当前docker的默认存储目录
docker info
可以看到docker存储驱动程序和默认存位:
Storage Driver: overlay
Docker Root Dir: /var/lib/docker
二、停止docker服务
sudo systemctl stop docker.service
三、目录迁移
3.1 创建新的docker目录,执行命令df -h,找一个大的磁盘。 我在/mnt目录下面建了 /newdir/docker目录,执行的命令是:
# 查看文件夹大小
sudo du -hd 1
sudo mkdir -p /newdir/docker
3.2 迁移/var/lib/docker目录下面的文件到 /home/docker
sudo cp -r /var/lib/docker/* /newdir/docker/
四、修改配置文件
4.1 编辑 /etc/docker/daemon.json 文件
sudo vim /etc/docker/daemon.json
默认情况下这个配置文件是没有的,这里实际也就是新建一个,然后写入以下内容:
{
"data-root": "/newdir/docker"
}
取决于具体的ubuntu版本或者kernel版本决定要用data-root还是graph
/newdir/docker --> docker的存储路径
此文件还涉及默认源的设定,如果设定了国内源,那么实际就是在源地址下方加一行,写成:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"data-root": "/newdir/docker"
}
4.2 编辑docker配置文件:
sudo vim /etc/systemd/system/multi-user.target.wants/docker.service
# 将ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock修改以下内容:
ExecStart=/usr/bin/dockerd --graph=/newdir/docker --storage-driver=overlay
五、保存退出,然后重启 docker 服务
重启docker服务,就可以更新docker默认的镜像容器保存位置,特别注意,如果新的保存位置里拷贝了原来容器保存位置里的所有内容,那么镜像数据等也就迁移过来了。
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl status docker
六、检查docker存储路径是否配置成功
docker info
七、启动成功后,再确认之前的镜像还在
docker ps -a
docker images
八、确定容器、镜像没问题后删除/var/lib/docker/目录中的文件。
rm -rf /var/lib/docker/*
迁移后一定要赋予权限 !!!!
chmod -R 777 /newdir/docker/