修改 Docker 镜像存储目录容器运行时目录

默认情况下,Docker 的数据(镜像、容器、网络、卷等)都存放在 /var/lib/docker 目录下。我们可以通过修改配置文件或启动参数来调整。


修改 Docker 镜像与容器运行目录

1. 停止 Docker

systemctl stop docker
systemctl stop docker.socket


2. 创建新目录

假设你要把数据迁移到 /data/docker

mkdir -p /data/docker


3. 修改 Docker 配置文件

编辑 /etc/docker/daemon.json (没有就新建):

{
  "data-root": "/data/docker"
}


4. 迁移已有数据(可选)

如果你要保留之前拉取的镜像和容器,可以把原目录迁移过来:

rsync -aP /var/lib/docker/ /data/docker/


5. 修改 systemd 配置(如果用的是自定义启动参数)

有些系统(比如 Ubuntu、CentOS)Docker 可能会通过 systemd unit 覆盖配置,你可以检查:

systemctl cat docker | grep ExecStart

如果里面有 --data-root 参数,可以在 /etc/systemd/system/docker.service.d/override.conf 里修改,比如:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --data-root=/data/docker -H fd://

然后:

systemctl daemon-reexec


6. 启动 Docker

systemctl start docker
systemctl enable docker


7. 验证

docker info | grep "Docker Root Dir"

应该显示:

 Docker Root Dir: /data/docker


⚠️ 注意:

  • 如果你是迁移目录,不要直接 mv,推荐 rsynccp -a,保证权限与符号链接正确。

  • 修改目录后,所有容器需要重新启动

  • 如果用的是 overlay2 存储驱动,最好保证新目录和旧目录在同一个文件系统类型(如 ext4/xfs),避免兼容性问题。