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部署数据可视化平台Metabase

    docker部署数据可视化平台Metabase

    Metabase 把数据分析常用的查询通过一个个易于操作的界面呈现,本文主要介绍了docker部署数据可视化平台Metabase,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • Docker load之后镜像名字为none问题解决方法

    Docker load之后镜像名字为none问题解决方法

    这篇文章主要介绍了Docker load之后镜像名字为none问题解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 2023年windows DockerDeskTop最新款4.18.0 全程保姆级安装图文教程

    2023年windows DockerDeskTop最新款4.18.0 全程保姆级安装图文教程

    这篇文章主要介绍了2023年windows DockerDeskTop最新款4.18.0 全程保姆级安装图文教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Docker之苹果Mac安装Docker的两种方式小结

    Docker之苹果Mac安装Docker的两种方式小结

    这篇文章主要介绍了Docker之苹果Mac安装Docker的两种方式小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • docker image删不掉的解决办法

    docker image删不掉的解决办法

    在使用Docker的时候遇到删不掉image的情况,怎么回事,如何解决呢?下面小编给大家分享下docker image删不掉的解决办法,需要的朋友参考下吧
    2017-01-01
  • Docker版FFmpeg安装部署的详细步骤

    Docker版FFmpeg安装部署的详细步骤

    项目组开发过程用因为要使用音频格式转换功能,FFmpeg是常见的音视频处理工具,本文就来介绍一下Docker版FFmpeg安装部署的详细步骤,感兴趣的可以了解一下
    2023-10-10
  • win10家庭版安装Docker的方法步骤

    win10家庭版安装Docker的方法步骤

    这篇文章主要介绍了win10家庭版安装Docker的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • docker-compose搭建prometheus+grafana+钉钉告警

    docker-compose搭建prometheus+grafana+钉钉告警

    本文主要介绍了docker-compose搭建prometheus+grafana+钉钉告警,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • docker镜像与传统vm虚拟机区别及分析

    docker镜像与传统vm虚拟机区别及分析

    这篇文章主要是内容分享系列,为大家用大白话通俗的讲解docker镜像与传统vm虚拟机区别以及分析,有需要的朋友可以借鉴参考想,希望能够有所帮助
    2022-03-03
  • Docker环境搭建的简单方法

    Docker环境搭建的简单方法

    这篇文章主要给大家介绍了关于Docker环境搭建的简单方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论