Docker镜像存储路径的查看与修改完整指南

 更新时间:2026年04月21日 09:23:01   作者:君九@DBA  
Docker 镜像作为容器运行的基础,其存储位置管理是 Docker 运维中的重要环节,本文将深入解析 Docker 镜像的存储机制,详细介绍如何查看当前存储路径,并提供多种修改镜像存储位置的方法,希望对大家有所帮助

Docker 镜像作为容器运行的基础,其存储位置管理是 Docker 运维中的重要环节。默认情况下,Docker 会将镜像、容器、卷等数据统一存储在固定路径,但在实际使用中,我们常常需要根据存储需求调整这些路径。本文将深入解析 Docker 镜像的存储机制,详细介绍如何查看当前存储路径,并提供多种修改镜像存储位置的方法。

一、Docker 镜像存储路径揭秘

在了解如何修改路径之前,我们首先需要理解 Docker 的数据存储结构。Docker 的所有数据(包括镜像、容器、卷、网络配置等)默认存储在一个根目录下,这个目录被称为 Docker 根目录(Docker Root Dir)。

默认存储路径

Docker 的默认根目录为:

/var/lib/docker

在这个目录下,与镜像相关的核心子目录包括:

  • images/:存储镜像的元数据和层信息
  • overlay2/(或 aufs/devicemapper/ 等):根据所使用的存储驱动,存放镜像的实际文件层(最常用的是 overlay2)
  • volumes/:存储卷数据(与镜像间接相关,但属于 Docker 数据存储的一部分)

存储路径的重要性

为什么需要关注镜像存储路径?主要有以下几个原因:

  • 磁盘空间管理:镜像文件通常较大,系统盘(尤其是默认安装的 / 分区)可能空间有限
  • 性能优化:可以将镜像存储在性能更好的磁盘(如 SSD)上提升容器启动速度
  • 数据安全:重要的镜像数据可能需要存储在有备份机制的专用存储设备上
  • 多磁盘规划:在服务器环境中,通常会有专门的数据盘用于存储应用数据

二、如何查看当前 Docker 镜像存储路径

查看 Docker 镜像的存储路径非常简单,有多种方法可以实现:

使用docker info命令(推荐)

docker info 命令会输出 Docker 系统的详细信息,其中包含镜像存储的根目录:

docker info | grep "Docker Root Dir"

执行后会得到类似以下的输出:

Docker Root Dir: /var/lib/docker

这个路径就是 Docker 存储所有数据(包括镜像)的根目录。

查看 Docker 服务配置

也可以通过查看 Docker 服务的配置文件来确认存储路径。对于使用 systemd 的系统:

systemctl cat docker | grep -i 'data-root\|graph'

该命令会显示 Docker 服务启动时是否指定了存储路径参数。

检查存储驱动和实际路径

如果想了解更详细的存储驱动和实际文件系统路径,可以查看:

# 查看存储驱动
docker info | grep "Storage Driver"

# 查看具体的镜像存储位置(以 overlay2 为例)
ls /var/lib/docker/overlay2/

三、修改 Docker 镜像存储路径的三种方法

当需要修改镜像存储路径时,有几种不同的方法可供选择,适用于不同的系统环境和需求。

通过 daemon.json 配置(推荐)

这是最简洁且推荐的方法,适用于所有支持 daemon.json 配置文件的 Docker 版本(Docker 1.12+)。

停止 Docker 服务

sudo systemctl stop docker
# 确保所有相关进程都已停止
sudo systemctl stop docker.socket

创建新的存储目录

假设我们要将镜像存储到 /data/docker 目录:

sudo mkdir -p /data/docker
# 确保权限正确
sudo chmod -R 711 /data/docker

配置 daemon.json 文件

编辑或创建 Docker 守护进程配置文件:

sudo vim /etc/docker/daemon.json

添加或修改 data-root 配置项:

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

注意:在 Docker 17.05 之前的版本中使用 graph 而不是 data-root,但现在 data-root 是推荐的参数名。

重启 Docker 服务

sudo systemctl daemon-reload
sudo systemctl start docker

验证修改结果

docker info | grep "Docker Root Dir"

输出应显示新的路径 /data/docker

通过 systemd 服务配置

对于使用 systemd 的 Linux 发行版(如 Ubuntu 16.04+、CentOS 7+),可以直接修改 Docker 服务的启动参数。

停止 Docker 服务

sudo systemctl stop docker
sudo systemctl stop docker.socket

创建或编辑 systemd 配置文件

sudo vim /etc/systemd/system/docker.service.d/override.conf

如果目录不存在,先创建它:

sudo mkdir -p /etc/systemd/system/docker.service.d/

添加配置内容

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --data-root /data/docker --containerd=/run/containerd/containerd.sock

注意:ExecStart= 这一行是为了清除默认的启动命令,然后在第二行重新定义。

重新加载配置并启动服务

sudo systemctl daemon-reload
sudo systemctl start docker

验证修改

docker info | grep "Docker Root Dir"

使用符号链接(不推荐)

虽然可以通过符号链接的方式"欺骗"Docker 使用新路径,但这种方法可能会在某些情况下导致权限问题或升级故障,不推荐用于生产环境。

停止 Docker 服务

sudo systemctl stop docker

迁移现有数据

# 移动现有数据到新位置
sudo mv /var/lib/docker /data/docker

创建符号链接

sudo ln -s /data/docker /var/lib/docker

启动 Docker 服务

sudo systemctl start docker

四、迁移现有镜像和容器数据

如果已经有镜像和容器数据,修改路径后需要将它们迁移到新位置,否则会丢失现有数据。

在修改路径前,先备份数据

sudo cp -r /var/lib/docker/ /var/lib/docker_backup/

修改存储路径后,复制数据到新目录

sudo cp -r /var/lib/docker/* /data/docker/

确保权限正确

sudo chown -R root:root /data/docker
sudo chmod -R 711 /data/docker

重启 Docker 服务

sudo systemctl restart docker

验证数据是否完整

# 查看镜像是否存在
docker images

# 查看容器是否存在
docker ps -a

五、注意事项与最佳实践

提前规划存储路径:最好在初始安装 Docker 时就规划好存储路径,避免后期迁移的麻烦

权限设置:新的存储目录必须确保 Docker 服务有足够的访问权限,通常需要 root 所有权和 711 权限

存储性能:选择性能较好的存储介质(如 SSD)存放 Docker 数据,尤其是在高频使用镜像和容器的场景

避免嵌套挂载:不要将新的存储路径设置在 NFS 挂载或其他网络存储的深层目录,可能导致性能问题

版本兼容性:不同 Docker 版本的配置方式可能略有差异,操作前建议确认当前 Docker 版本:

docker --version

生产环境建议:在生产环境中,推荐使用 daemon.json 方法进行配置,更符合 Docker 的配置规范,也便于管理和版本控制

到此这篇关于Docker镜像存储路径的查看与修改完整指南的文章就介绍到这了,更多相关Docker查看与修改镜像存储路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker守护进程配置代理

    docker守护进程配置代理

    本文主要介绍了docker守护进程配置代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • Docker安装wordpress并配置数据库超详细介绍版

    Docker安装wordpress并配置数据库超详细介绍版

    安装WordPress是一项常见的任务,使用Docker可以使这个过程更加简单和可靠,下面这篇文章主要给大家介绍了关于Docker安装wordpress并配置数据库的相关资料,需要的朋友可以参考下
    2023-11-11
  • 将strapi打包成docker镜像的步骤详解

    将strapi打包成docker镜像的步骤详解

    在这个指南中,我们将学习如何将 Strapi 应用程序打包成 Docker 镜像,解决多环境部署问题,文末也会提供打包好的镜像地址,让同学们能够直接使用,需要的朋友可以参考下
    2024-01-01
  • Docker容器化部署入门全面指南

    Docker容器化部署入门全面指南

    Docker是一个开源的容器化平台,它允许开发者打包、分发和运行应用程序在任何地方,无需担心底层环境的差异,本文给大家介绍Docker容器化部署入门全面指南,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • MongoDB从入门到实战之Docker快速安装MongoDB的详细过程

    MongoDB从入门到实战之Docker快速安装MongoDB的详细过程

    这篇文章主要介绍了MongoDB从入门到实战之Docker快速安装MongoDB的详细过程,本文给大家分享详细实战教程,帮助大家快速把MongoDB环境搭建起来,感兴趣的朋友一起看看吧
    2025-05-05
  • Docker镜像与容器的导入导出操作实践

    Docker镜像与容器的导入导出操作实践

    这篇文章介绍了Docker镜像与容器的导入导出操作,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • docker-compose部署Java应用和相关依赖方式

    docker-compose部署Java应用和相关依赖方式

    介绍如何使用docker-compose一键部署Java应用及依赖,并实现MySQL数据库的自动初始化
    2024-10-10
  • docker的pdflatex环境配置的方法步骤

    docker的pdflatex环境配置的方法步骤

    这篇文章主要介绍了docker的pdflatex环境配置的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • docker配置独立桥接IP的方法

    docker配置独立桥接IP的方法

    这篇文章主要介绍了docker配置独立桥接IP的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • mac通过docker一键部署Nexus3的过程记录

    mac通过docker一键部署Nexus3的过程记录

    编写一些简易的 shell 脚本帮我们快速的搭建服务器,猿们只要按着套路“一步一步”的操作,基本上都可以快速部署服务,这篇文章主要介绍了mac通过docker一键部署Nexus3及安装步骤,需要的朋友可以参考下
    2022-10-10

最新评论