修改Docker镜像(images)的存储路径的多种实现方式

 更新时间:2026年01月23日 09:00:51   作者:用户8612485135916  
本文介绍了如何修改Docker数据根目录以解决磁盘空间不足或希望使用更大/更快磁盘的问题,推荐通过修改daemon.json配置来实现,并提供了详细的步骤,需要的朋友可以参考下

要修改 Docker 镜像(images)的存储路径(即 Docker 的 数据根目录,默认为 /var/lib/docker),可以通过以下几种方式实现。这是在磁盘空间不足或希望将 Docker 数据放到更大/更快的磁盘时的常见操作。

推荐方法:修改daemon.json配置(适用于 systemd 管理的系统)

步骤 1:停止 Docker 服务

sudo systemctl stop docker

停止后所有容器都会停止,请确保已备份重要数据或可接受停机。

步骤 2:创建新目录并迁移数据(可选但推荐)

假设你想把 Docker 数据移到 /data/docker

# 创建新目录
sudo mkdir -p /data/docker

# (可选)迁移现有数据(如果你已有镜像/容器)
sudo rsync -aqxP /var/lib/docker/ /data/docker/

使用 rsync 而不是 mv,可以保留原数据作为备份,直到确认新路径工作正常。

步骤 3:配置 Docker 使用新路径

编辑或创建 Docker 的配置文件:

sudo nano /etc/docker/daemon.json

添加以下内容:

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

如果文件已存在其他配置,请合并 JSON,确保格式合法。

步骤 4:启动 Docker 并验证

# 启动 Docker
sudo systemctl start docker

# 检查状态
sudo systemctl status docker

# 查看 Docker 根目录是否生效
docker info | grep "Docker Root Dir"

预期输出:

Docker Root Dir: /data/docker

步骤 5:清理旧数据(确认无误后)

如果迁移成功且运行正常,可删除旧数据释放空间:

sudo rm -rf /var/lib/docker

务必先确认新路径工作正常再删除!

其他方法(不推荐)

方法 2:通过软链接(Symlink)

sudo systemctl stop docker
sudo mv /var/lib/docker /data/docker
sudo ln -s /data/docker /var/lib/docker
sudo systemctl start docker
  • 简单,但某些工具可能不兼容符号链接。
  • 不如 daemon.json 方式规范。

方法 3:修改 systemd 启动参数(过时)

早期版本可通过修改 /etc/default/docker 或 systemd service 文件加 -g /new/path,但 Docker 官方已弃用此方式,推荐使用 daemon.json

权限与 SELinux 注意事项

确保新目录权限正确:

sudo chown root:root /data/docker
sudo chmod 700 /data/docker

如果启用了 SELinux(如 CentOS/RHEL),可能需要调整上下文:

sudo semanage fcontext -a -t container_var_lib_t "/data/docker(/.*)?"
sudo restorecon -R /data/docker

验证是否生效

拉取一个新镜像:

docker pull hello-world

检查新路径下是否有数据:

ls /data/docker/
# 应看到 containers, image, overlay2, volumes 等目录

常见错误

问题解决方案
docker: Error response from daemon: ...检查 daemon.json JSON 格式是否合法(可用 jsonlint.com 验证)
启动失败查看日志:journalctl -u docker.service -n 50
磁盘空间未释放确认是否真的迁移了数据,或旧目录未删除

总结

操作命令
停止 Dockersudo systemctl stop docker
配置新路径编辑 /etc/docker/daemon.json,加 "data-root": "/your/path"
启动 Dockersudo systemctl start docker
验证docker info | grep "Docker Root Dir"

最佳实践:在新服务器部署时就配置好 data-root,避免后期迁移。

以上就是修改Docker镜像(images)的存储路径的多种实现方式的详细内容,更多关于Docker镜像存储路径修改的资料请关注脚本之家其它相关文章!

相关文章

  • Docker网络及容器通信原理详解

    Docker网络及容器通信原理详解

    这篇文章主要介绍了Docker网络及容器通信原理详解的相关资料,并通过启动几个容器来探究Docker网络及容器通信,需要的朋友可以参考下
    2022-11-11
  • 如何将Docker的构建时间减少40%(推荐)

    如何将Docker的构建时间减少40%(推荐)

    这篇文章主要介绍了如何将Docker的构建时间减少40%,本文描述了我们在优化CI管道后获得的一些新见解,需要的朋友可以参考下
    2023-11-11
  • centos修改docker网络配置方法分享

    centos修改docker网络配置方法分享

    本文给大家分享的是centos修改docker网络配置的方法,非常的实用,有需要的小伙伴可以参考下
    2017-03-03
  • Docker 部署分布式搜索引擎 Elastic Search的详细过程

    Docker 部署分布式搜索引擎 Elastic Search的详细过程

    Elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容,这篇文章主要介绍了Docker 部署分布式搜索引擎 Elastic Search,需要的朋友可以参考下
    2023-02-02
  • docker desktop安装redis的实现步骤

    docker desktop安装redis的实现步骤

    本文主要介绍了docker desktop安装redis的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • Docker build命令使用小结

    Docker build命令使用小结

    本文主要介绍了Docker build命令使用小结,主要用于使用Dockerfile创建镜像,它会根据用户提供的Dockerfile文件,在本地构建出一个新的镜像,感兴趣的可以了解一下
    2023-12-12
  • Docker Desktop Vmmem内存占用过高问题及完美解决方案

    Docker Desktop Vmmem内存占用过高问题及完美解决方案

    DockerDesktopVmmem内存占用过高问题常见于其基于WSL运行类似虚拟机的机制,通过编辑.wslconfig文件限制WSL资源,可有效降低内存占用,具体操作包括创建.wslconfig文件,调整内存配置,并重启Docker Desktop,需注意内存设置不宜过小,以免影响Docker运行和容器稳定性
    2024-09-09
  • docker容器中文乱码的解决方法

    docker容器中文乱码的解决方法

    Docker默认不支持中文,在docker中部署Java运行环境,查看日志时都是乱码,下面这篇文章主要给大家介绍了关于docker容器中文乱码的解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • docker修改默认ip的实现步骤

    docker修改默认ip的实现步骤

    在 Docker 中,默认的网络是 bridge 网络,它通常使用 172.17.0.0/16 这个网段,那么如何修改,本文就来详细的介绍下docker修改默认ip的实现步骤,感兴趣的可以了解一下
    2024-02-02
  • 详解Ubuntu Docker Registry 搭建私有仓库

    详解Ubuntu Docker Registry 搭建私有仓库

    这篇文章主要介绍了详解Ubuntu Docker Registry 搭建私有仓库,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02

最新评论