当前位置: 首页 > article >正文

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

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

目录

迁移 Docker 存储目录的步骤

1、停止 Docker 服务

2、查看 Docker 默认存储目录

3、创建新的存储路径

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

5、修改 Docker 配置文件

6、重新启动 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操作的请忽略。


http://www.kler.cn/a/413200.html

相关文章:

  • 第 37 章 - Go 语言 持续集成与持续部署
  • 搭建私有docker仓库
  • Adaboost集成学习 | Python实现基于NuSVR-Adaboost多输入单输出回归预测
  • 守护进程
  • 常用的数据结构
  • 数据通信和网络
  • C# 属性 学习理解记录
  • 微信小程序构建npm失败,没有找到可以构建的npm包
  • Spring框架整合单元测试
  • Transactional 直接放在接口方法和类方法有什么不同
  • css Grid网格布局
  • Zabbix 7.0 LTS Docker Compose 部署指南与遇到问题解决
  • 化工专业如何转软工
  • PyQt学习笔记
  • 安卓悬浮窗应用外无法穿透事件问题
  • 【解决方案】pycharm出现 为项目选择的Python解释器无效
  • 基于SpringBoot的数据结构系统设计与实现(源码+定制+开发)
  • 【机器学习】机器学习基础
  • 如何理解vue的diff算法?diff是什么?diff的比较方式?原理分析?
  • 计算机视觉 9-16章 (硕士)
  • 基于边缘智能网关的机房安全监测应用
  • 基于Matlab深度学习的CT影像识别系统研究与实现
  • 从零开始理解JVM:对象的生命周期之对象创建
  • Android音频框架总结
  • [linux本地部署ai 未完成]
  • 【Linux 篇】Docker 启动和停止的精准掌舵:操控指南