修改docker的默认存储位置及镜像存储位置

前言

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/*
posted @ 2024-09-11 19:02  牛奔  阅读(1095)  评论(0编辑  收藏  举报