Docker 数据存储路径之解决默认docker路径位置磁盘空间不足的问题

 更新时间:2025年08月08日 10:33:48   作者:海洋猿  
本文指导如何通过修改daemon.json将Docker数据目录从/var/lib/docker迁移至/mnt/disk/docker,保留所有镜像、容器等数据,无需调整docker.service,步骤包括停止服务、迁移数据、修改配置及重启验证,需要的朋友跟随小编一起学习吧

用于迁移 Docker 默认数据目录 /var/lib/docker/mnt/disk/docker,保留所有现有数据且无需修改 docker.service,仅通过 daemon.json 配置完成迁移:

Docker 数据目录迁移指南(使用 daemon.json)

由于默认路径 /var/lib/docker 所在磁盘空间不足,可以将 Docker 数据目录迁移到新的挂载磁盘(如 /mnt/disk/docker),保留所有镜像、容器、卷、日志等数据。

1. 停止 Docker 服务

sudo systemctl stop docker

执行以下命令确认无残留进程:

ps aux | grep -E "docker|containerd"
  • 确保没有正在运行的进程如:
  • dockerd
  • containerd
  • docker-containerd-shim
  • 等其他 docker 子进程

2. 创建新目录并迁移数据(保留权限)

sudo mkdir -p /mnt/disk/docker
sudo rsync -avz /var/lib/docker/ /mnt/disk/docker/

3. 修改 Docker 配置文件/etc/docker/daemon.json

sudo tee /etc/docker/daemon.json <<EOF
{
  "data-root": "/mnt/disk/docker",
  "hosts": ["unix:///var/run/docker.sock"]
}
EOF

或者

vim /etc/docker/daemon.json
{
  "data-root": "/mnt/disk/docker",
  "hosts": ["unix:///var/run/docker.sock"]
}

4. 修复权限(可选但建议)

sudo chown -R root:docker /mnt/disk/docker
sudo chmod -R 755 /mnt/disk/docker

5. 重启 Docker 并验证

sudo systemctl start docker
docker info | grep "Docker Root Dir"  # 应输出 /mnt/disk/docker
docker ps -a                          # 检查原有容器是否存在

📂 Docker 默认数据目录结构详解(data-root)

data-root 默认为 /var/lib/docker 时,包含以下关键子目录:

/var/lib/docker/
├── buildkit/         # 镜像构建缓存
├── containers/       # 容器运行数据(日志、配置等)
├── image/            # 镜像及元数据
├── network/          # 网络配置
├── overlay2/         # 镜像层与容器层(Overlay2 存储驱动)
├── plugins/          # 插件数据
├── runtimes/         # 容器运行时信息
├── swarm/            # Swarm 模式相关数据
├── tmp/              # 临时文件
├── trust/            # 镜像签名信任
├── volumes/          # 卷数据(Volume 和 Bind Mount)
└── ...               # 其他运行数据

🧱 详细说明

(1)镜像存储路径

  • 目录:/var/lib/docker/image/
  • 元数据:
  • overlay2/imagedb/: 镜像 ID、标签等
  • overlay2/layerdb/: 镜像层信息(DiffID、ChainID)
  • 实际内容:
  • 镜像层文件存储于 /var/lib/docker/overlay2/
  • 每层一个目录,如:overlay2/<layer-id>/diff

(2)容器运行时数据

  • 目录:/var/lib/docker/containers/<容器ID>/
  • 关键文件:
  • <容器ID>-json.log: 容器日志(JSON 格式)
  • config.v2.json: 容器配置
  • hostname, hosts, resolv.conf: 网络相关配置

如需恢复默认配置,只需删除或修改 /etc/docker/daemon.json 并迁移数据回 /var/lib/docker

到此这篇关于Docker 数据存储路径之解决默认docker路径位置磁盘空间不足的问题的文章就介绍到这了,更多相关docker路径位置磁盘空间不足内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker mysql+nacos单机部署的实现步骤

    Docker mysql+nacos单机部署的实现步骤

    本文主要介绍了Docker mysql+nacos单机部署的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • 关于docker registry使用详解

    关于docker registry使用详解

    Docker Registry 是一个无状态,高度可扩展的服务器端应用程序,它存储并允许您分发Docker映像,本文给大家介绍docker registry使用及相关配置,感兴趣的朋友一起看看吧
    2022-03-03
  • docker-compose的build使用方式

    docker-compose的build使用方式

    这篇文章主要介绍了docker-compose的build使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Docker连接宿主Redis的方法步骤

    Docker连接宿主Redis的方法步骤

    本文主要介绍了Docker连接宿主Redis的方法步骤,可以轻松地使用Docker容器与宿主机上的Redis进行交互,实现高效的数据存储和共享,,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • 开放Docker端口的实现示例

    开放Docker端口的实现示例

    本篇文章主要介绍了开放Docker端口的实现示例, 需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • 使用Docker安装和配置 MySQL 数据库的过程详解

    使用Docker安装和配置 MySQL 数据库的过程详解

    本文将介绍如何使用Docker来安装和配置MySQL数据库,以便在开发和测试环境中快速搭建MySQL实例,本文也是介绍两种方式进行分别是“使用镜像安装”、“使用Docker Compose安装”,感兴趣的朋友一起看看吧
    2023-12-12
  • Mac OS如何添加docker环境变量

    Mac OS如何添加docker环境变量

    安装Docker Desktop后需手动将CLI路径添加至/etc/paths.d文件,以恢复命令行工具,通过创建对应文件并设置路径,重启终端后环境变量生效,即可正常使用Docker CLI
    2025-07-07
  • docker磁盘空间清理的解决办法

    docker磁盘空间清理的解决办法

    前段时间遇到docker磁盘空间太少,无法写入数据的问题。本文就来介绍一下docker磁盘空间清理的解决办法,感兴趣的可以了解一下
    2021-06-06
  • docker和docker-compose的版本对应关系的实现

    docker和docker-compose的版本对应关系的实现

    本文主要介绍了docker和docker-compose的版本对应关系的实现,两者虽非强制绑定,但新版本docker-compose可能依赖更高版本Docker引擎的API,具有一定的参考价值,感兴趣的可以了解一下
    2025-06-06
  • docker-compose常用命令及.yaml配置模板方式

    docker-compose常用命令及.yaml配置模板方式

    这篇文章主要介绍了docker-compose常用命令及.yaml配置模板方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05

最新评论