前言
Docker 默认安装的情况下,会使用 /var/lib/docker/
目录作为存储目录,用以存放拉取的镜像和创建的容器等。
不过由于此目录一般都位于系统盘,遇到系统盘比较小,而镜像和容器多了后就容易出问题,这里说明一下如何修改 Docker 的默认存储目录。
一、查看当前docker的默认存储目录
docker info
# docker 存储目录
Docker Root Dir: /var/lib/docker
二、停止docker服务
systemctl stop docker
三、目录迁移
创建新的 docker 目录,执行命令 df -h
,找一个大的磁盘。
我在 /home
目录下面建了 /home/docker
目录,执行的命令是:
mkdir -p /home/docker
迁移 /var/lib/docker
目录下面的文件到 /home/docker
# 和cp类似,只不过是会自动过滤,目标目录有的文件不会重新拷贝
rsync -avz /var/lib/docker /home/docker
四、编辑/etc/docker/daemon.json文件
vim /etc/docker/daemon.json
默认情况下这个配置文件是没有的,可以新建一个,然后写入以下内容:
{
"graph": "/home/docker"
}
取决于具体的 ubuntu
版本或者 kernel
版本决定要用 data-root
还是 graph
。
- Docker 17.05 及以后的版本使用 "data-root"。
- 旧版本可能使用 "graph",但建议升级到新版本。
在较新的 Docker 版本中,应该使用 "data-root" 配置项,而不是 "graph"。 "data-root或者graph": "/home/docker"
五、保存退出,然后重启 docker 服务
# reload配置文件
systemctl daemon-reload
# 重启docker
systemctl restart docker
如果 docker 启动失败,查看失败原因
systemctl status docker
journalctl -u docker.service
sudo journalctl -u docker --no-pager
六、检查docker存储路径是否配置成功
docker info | grep "Docker Root Dir"
Docker Root Dir: /home/docker
如果修改失败,可以检查 Docker 服务启动参数:
查看 Docker 服务的启动参数,确保没有在命令行中指定 data-root
。
可以查看 /lib/systemd/system/docker.service
或 /etc/systemd/system/docker.service.d/
下的文件,看看是否有相关配置:
vim /etc/systemd/system/docker.service.d/docker-options.conf
自己手动配置 data-root
。
然后重启 docker,查看是否成功。
七、启动成功后,再确认之前的镜像还在
docker ps -a
docker images
八、确定容器、镜像没问题后,删除/var/lib/docker/目录中的文件。
rm -rf /var/lib/docker/*