首页 教程 开发工具 修改Docker 默认存储目录( Docker Root Dir: /var/lib/docker)

修改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 默认存储目录( Docker Root Dir: /var/lib/docker)

默认情况下,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"

修改Docker 默认存储目录( Docker Root Dir: /var/lib/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

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

7、验证 Docker 存储目录

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

docker info | grep "Docker Root Dir"

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

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

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

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.18k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.24k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.16k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.09k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  491

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  316

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。