修改Docker默认存储路径,解决系统盘占用90%+问题(修改docker root dir)

随着Docker技术的广泛应用,它极大地简化了复杂项目的部署与维护流程,仅凭单一镜像即可轻松运行。然而,随着数据量不断增长,Docker的默认数据存储方式可能逐渐成为挑战,尤其是当默认安装于根目录(“/”)时,可能迅速消耗宝贵的系统空间。面对根目录空间不足的困境,尤其是在加载大型镜像时,调整Docker的Root Dir至专用的挂载数据目录显得尤为关键

为有效应对此问题,将Docker的数据存储迁移至专门配置的存储位置,不仅可以释放根目录的紧张空间,还能优化数据管理和扩展性。通过灵活配置Docker的存储路径,用户可以确保即使在处理大型镜像或数据集时,系统也能保持高效与稳定。

在这里插入图片描述

一、 查看默认目录(查看存储路径是否在系统盘)

docker info

一般默认目录都是:

Docker Root Dir: /var/lib/docker

二、 修改默认目录

1. 确保停止 docker 服务

systemctl stop docker.service

有的人可能会遇到以下错误:

Warning: Stopping docker.service, but it can still be activated by:
docker.socket

那就先执行 
 
systemctl stop docker.socket
 
再执行
 
systemctl stop docker.service

2.创建一个新的目录,用于存储 Docker 数据。

例如,将数据存储在 /www/docker/:
mkdir -p /www/docker/

3.复制 Docker 数据目录

将当前 /var/lib/docker 目录下的所有数据复制到新目录,使用 rsync 替代 cp 解决断点续传问题:

rsync -avz /var/lib/docker/* /home/docker/

4. 修改 / etc/docker/daemon.json 文件,添加更换目录地址

默认情况下,Docker 使用 /etc/docker/daemon.json 配置文件,如果没有此文件则需要手动创建

touch /etc/docker/daemon.json
vim /etc/docker/daemon.json
新增以下信息:
{
"data-root": "/www/docker"
}

“/www/docker” 即为我的目标地址

保存并关闭文件

5. 启动 docker服务

systemctl start docker

or

根据刚才的关闭操作,依次启动 socket 和 serice

systemctl start docker.socket
systemctl start docker.service

6. 验证

再次查看 Docker Root Dir 的值

docker info
df -h
docker ps
//或者直接验证一下服务是否可用

查看 Docker Root Dir 是否修改为指定目录

再删除原目录

cd /var/lib
rm -rf docker

注意:

  • 在执行这些步骤之前,请确保你已备份所有重要的 Docker 数据,以防意外丢失。
  • 在移动数据和更改配置后,务必进行测试以确保一切正常运行。
<think>好的,我现在需要帮助用户了解如何更改Docker默认存储路径。根据用户提供的引用内容,我需要整理出正确的步骤,并确保符合最新的Docker版本要求。首先,用户提到的引用[1]指出旧版本的“graph”选项已被弃用,现在应该使用“data-root”。引用[2]、[3]、[4]提供了具体的配置方法和注意事项。 首先,我需要确认步骤的正确性。用户需要停止Docker服务,编辑daemon.json文件,添加“data-root”指向新路径,然后重启服务。此外,可能需要迁移现有数据,这需要用到rsync命令,确保数据完整。引用[3]中的示例配置文件是正确的,但用户需要注意路径是否存在和权限问题。 接下来,我需要检查是否有遗漏的步骤。比如,是否需要创建目标目录并设置权限?是的,用户需要手动创建目录并赋予docker用户权限,否则服务可能无法启动。另外,修改配置文件后,必须重新加载daemon并重启Docker,否则更改不会生效。 可能遇到的问题包括配置文件格式错误,比如缺少逗号或引号,这会导致Docker启动失败。用户需要仔细检查JSON格式。另外,如果目标路径空间不足,也会有问题,所以用户应确保新路径有足够的存储空间。 还要注意,用户是否在使用最新Docker版本,因为旧版本可能仍有不同的配置方式。根据引用[1],现在都是用“data-root”,所以步骤适用于较新的版本。最后,是否需要备份数据?虽然引用中没有提到,但建议用户在迁移前备份,防止数据丢失。 总结步骤:停止服务→编辑配置文件→迁移数据(可选)→重启服务→验证路径。确保每个步骤都清晰,并提醒用户注意事项,如权限、路径存在、JSON格式正确等。这样用户就能顺利修改Docker存储路径了。</think>### 如何修改Docker默认存储路径? #### 1. **停止Docker服务** 修改配置前需先停止Docker服务,避免数据损坏: ```bash systemctl stop docker ``` #### 2. **编辑Docker配置文件** Docker存储路径通过`/etc/docker/daemon.json`配置。若文件不存在,直接新建: ```bash vim /etc/docker/daemon.json ``` 添加以下内容(假设新路径为`/data/docker`): ```json { "data-root": "/data/docker", "registry-mirrors": ["https://registry.docker-cn.com"] } ``` > **注意**:`data-root`取代了旧版`graph`选项,路径需用绝对路径且权限正确[^1][^3]。 #### 3. **迁移现有数据(可选)** 若需保留原有镜像、容器等数据,使用`rsync`同步: ```bash rsync -av /var/lib/docker/ /data/docker/ ``` 完成后备份原目录: ```bash mv /var/lib/docker /var/lib/docker.bak ``` #### 4. **重启Docker服务** 重新加载配置并启动服务: ```bash systemctl daemon-reload systemctl start docker ``` #### 5. **验证配置** 检查Docker信息,确认存储路径已更新: ```bash docker info | grep "Docker Root Dir" ``` 输出应为: ``` Docker Root Dir: /data/docker ``` #### 注意事项 - **路径权限**:确保新目录存在且用户/组为`docker`或`root`(例如`chmod 700 /data/docker`)[^3][^4]。 - **配置文件格式**:JSON严格校验逗号、引号,错误格式会导致服务启动失败[^2][^3]。 - **存储空间**:生产环境建议将路径指向非系统盘(如独立分区或磁盘阵列)[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汀、人工智能

十分感谢您的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值