docker如何改变保存镜像的目录?

  Server

以下是修改 Docker 镜像存储目录的完整方案,综合多个权威教程和最佳实践整理:


​一、推荐方法:通过 daemon.json 修改(适用于 Docker 1.12+ 版本)​

​操作步骤​

  1. ​停止 Docker 服务​sudo systemctl stop docker
  2. ​创建新存储目录​sudo mkdir -p /new/docker/path # 例如 /data/docker
  3. ​迁移现有数据(可选)​sudo cp -rp /var/lib/docker/* /new/docker/path/
  4. ​修改配置文件​sudo nano /etc/docker/daemon.json 添加或更新以下内容: {
    "data-root": "/new/docker/path"
    }
  5. ​重启并验证​sudo systemctl daemon-reload
    sudo systemctl start docker
    docker info | grep "Docker Root Dir" # 应显示新路径

​二、替代方案:Systemd 服务参数调整(旧版本兼容)​

​操作步骤​

  1. ​编辑服务文件​sudo nano /usr/lib/systemd/system/docker.service
  2. ​修改 ExecStart 参数​
    找到包含 dockerd 的行,添加 --data-root 参数: ExecStart=/usr/bin/dockerd --data-root=/new/docker/path
  3. ​重载配置​sudo systemctl daemon-reload
    sudo systemctl restart docker

​三、临时方案:符号链接(快速但需谨慎)​

​操作步骤​

  1. ​迁移数据并创建链接​sudo systemctl stop docker
    sudo mv /var/lib/docker /new/docker/path
    sudo ln -s /new/docker/path /var/lib/docker
  2. ​验证链接有效性​ls -l /var/lib/docker # 应显示链接符号 → /new/docker/path

​四、关键注意事项​

  1. ​数据迁移风险​
    • 建议优先复制(cp -rp)而非移动(mv)原始数据,防止操作失败导致镜像丢失
    • 检查新目录权限:确保属主为 root:root,权限为 755
  2. ​版本适配性​​ 方法适用版本系统限制daemon.jsonDocker 1.12+全平台通用Systemd 参数修改旧版本 DockerCentOS/Ubuntu符号链接全版本需关闭SELinux
  3. ​空间监控​docker system df -v # 查看新目录下镜像占用情况

​五、常见问题排查​

  • ​启动失败​​:检查 /etc/docker/daemon.json 语法(JSON 格式要求严格)
  • ​权限错误​​:运行 sudo chown -R root:root /new/docker/path
  • ​路径未生效​​:确认是否遗漏 systemctl daemon-reload 步骤

LEAVE A COMMENT