修改Docker 默认存储目录( Docker Root Dir: /var/lib/docker)

Docker 默认将所有的数据(包括镜像、容器、卷等)存储在 /var/lib/docker 目录下。这个目录默认被配置在系统的根分区或者较小的分区上。随着容器化应用的增加,或者 Docker 容器和镜像的数量增加,默认存储位置可能会迅速填满,导致系统的根分区空间不足,从而影响整个系统的运行。如果根分区或存储空间满了,Docker 就无法再拉取镜像或启动容器,这可能会导致服务中断。因此,将 Docker 存储目录迁移到其他更大、更适合存储的分区或硬盘上,可以有效避免这种问题。

目录

[迁移 Docker 存储目录的步骤](#迁移 Docker 存储目录的步骤)

[1、停止 Docker 服务](#1、停止 Docker 服务)

[2、查看 Docker 默认存储目录](#2、查看 Docker 默认存储目录)

3、创建新的存储路径

4、同步数据到新的存储路径(如果数据量太大,可以选择使用下面的mv命令)

[5、修改 Docker 配置文件](#5、修改 Docker 配置文件)

[6、重新启动 Docker 服务](#6、重新启动 Docker 服务)

[7、验证 Docker 存储目录](#7、验证 Docker 存储目录)


迁移 Docker 存储目录的步骤

1、停止 Docker 服务

停止 Docker 服务,以避免在迁移过程中 Docker 正在使用存储目录。运行以下命令停止 Docker 服务

复制代码
systemctl stop docker

2、查看 Docker 默认存储目录

使用以下命令查看 Docker 当前的存储目录路径

复制代码
docker info 

默认情况下,Docker 存储目录通常是 /var/lib/docker

3、创建新的存储路径

创建新的存储目录,根据服务器存储大小,指定存储路径。这里我将新目录设置为 /data/docker,你可以根据实际需求修改路径。

复制代码
mkdir  /data/docker/

4、同步数据到新的存储路径(如果数据量太大,可以选择使用下面的mv命令)

使用 rsync 命令将 Docker 默认存储目录的数据同步到新的目录。

复制代码
rsync -av --progress /var/lib/docker/* /data/docker/

使用 rsync 可以确保文件的完整性和权限不变:

  • -a 表示归档模式,保持文件的权限、时间戳等信息。
  • -v 表示显示详细的输出。
  • --progress 显示进度。

注意: 如果你决定使用 mv 命令,它会直接移动数据,而不是复制。mvrsync 快,适合在迁移数据后不再保留旧数据的情况。但请确保新路径可用,并在迁移完成后使用 mv 命令。

复制代码
mv /var/lib/docker/* /data/docker/

mvrsync 的区别:

  • rsync 适合迁移大规模数据,支持增量备份和检查文件差异,且可以保留文件权限和时间戳。
  • mv 只是简单的移动文件或目录,速度较快,但没有检查和增量功能,适用于已经验证新路径没有问题的情况。

5、修改 Docker 配置文件

如果不存在 Docker 配置文件 /etc/docker/daemon.json,则需要新建。编辑该文件并添加新的存储路径:

复制代码
vi /etc/docker/daemon.json

在文件中添加或者修改如下配置,指定你创建的存储路径:

复制代码
"data-root": "/data/docker"

注意: 如果是修改已有的配置,请确保在 JSON 格式中没有语法错误,尤其是在最后一行不要多加逗号。

扩展内容:registry-mirrors 配项,指定了多个 Docker 镜像仓库的镜像源,Docker 默认使用 Docker Hub 作为镜像源,但由于网络带宽、速度等原因,某些地区的用户访问 Docker Hub 时可能会遇到速度较慢的问题。通过设置镜像加速器或使用镜像源,能够提高 Docker 镜像的拉取速度。 所以有需要的话可以多加以下配置:

复制代码
"registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc",
    "http://hub-mirror.c.163.com",
    "https://docker.fxxk.dedyn.io",
    "https://huecker.io",
    "https://dockerhub.timeweb.cloud",
    "https://noohub.ru"
  ]

6、重新启动 Docker 服务

修改完配置文件后,需要重新加载并启动 Docker 服务。首先执行以下命令重新加载 systemd 配置:

复制代码
systemctl daemon-reload

然后启动 Docker 服务:

复制代码
systemctl start docker.service

查看Docker服务是否启动(如果启动失败核对一下/etc/docker/daemon.json配置):

复制代码
systemctl status docker.service

7、验证 Docker 存储目录

再次使用以下命令确认 Docker 是否已成功切换到新的存储目录:

复制代码
docker info | grep "Docker Root Dir"

确认输出的新目录是 /data/docker

*如果允许没有问题可以把/var/lib/docker数据删除,节省空间。前面是mv操作的请忽略。

相关推荐
聽雨23719 分钟前
02每日简报20250704
linux·科技·金融·生活·社交电子·娱乐·媒体
feilieren26 分钟前
Docker 安装 Elasticsearch 9
运维·elasticsearch·docker·es
Maki Winster1 小时前
Peek-Ubuntu上Gif录制工具-24.04LTS可装
linux·ubuntu·peek
KaiwuDB1 小时前
使用Docker实现KWDB数据库的快速部署与配置
数据库·docker
Maki Winster2 小时前
在 Ubuntu 下配置 oh-my-posh —— 普通用户 + root 各自使用独立主题(共享可执行)
linux·运维·ubuntu
守望时空332 小时前
Linux下KDE桌面创建自定义右键菜单
linux
cleble2 小时前
(转)使用DockerCompose部署微服务
docker
l0sgAi2 小时前
vLLM在RTX50系显卡上部署大模型-使用wsl2
linux·人工智能
麟城Lincoln4 小时前
【RHCSA-Linux考试题目笔记(自用)】servera的题目
linux·笔记·考试·rhcsa
寻月隐君4 小时前
保姆级教程:Zsh + Oh My Zsh 终极配置,让你的 Ubuntu 终端效率倍增
linux·后端·命令行