Docker 踩得坑(docker root dir 默认路径占用过多)

本文详细介绍了当Docker占用磁盘空间过大时的解决方案,包括修改Docker的存储目录,更新docker.service配置,以及使用软链接等方式来释放磁盘空间。提供了具体的步骤和命令,如cd、mkdir、vim等,适用于遇到类似问题的技术人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统文件 100%了 经过排查后 发现是docker的问题

通过docker info 命令看到 Docker Root Dir   进去发现/var/lib/docker这个文件占用过多

然后去百度了下怎么解决具体步骤如下

1

cd /home
mkdir docker

2 修改docker.service文件

vim /usr/lib/systemd/system/docker.service

3 进入service文件后修改部分配置

ExecStart=/usr/bin/dockerd --graph /home/docker

4 重新enable 一下docker 服务 重新进行软连接 以及进行一次 daemon-reload

systemctl disable docker
systemctl enable docker
systemctl daemon-reload
systemctl start docker

这样一般是没有啥问题了

 

还有其他的方案 具体如下

方法一 

cd /var/lib/

mv docker/* /home/docker

rm -rf docker

ln -s /home/dockerfile/ /var/lib/docker

方法二

停止docker服务

vi /etc/docker/daemon.json

增加选项 "graph":"/home/docker",

参考文章

https://blog.youkuaiyun.com/qq_37674858/article/details/81669082

https://blog.youkuaiyun.com/zzz3112362088/article/details/87861237

<think>嗯,用户想修改Docker默认存储路径,也就是根目录配置。我需要先回忆一下相关的步骤。记得Docker默认是把数据存在/var/lib/docker这个目录下的,对吧?用户可能因为磁盘空间不足,或者想换到更大的存储位置,需要更改这个路径。 首先,我需要确认用户使用的系统,不同的系统配置文件可能不同。比如,如果是使用systemd的系统,比如大数Linux发行版,应该修改daemon.json文件。这个文件的位置在/etc/docker/daemon.json。如果不存在的话,可能需要自己创建。然后添加"data-root"这个选项,指定新的路径。比如: { "data-root": "/new/path/docker" } 保存之后,重启Docker服务,应该是systemctl restart docker。这样新的配置就生效了。不过,用户可能需要先停止Docker服务,否则可能会有问题。记得之前看过引用[1]提到过替换路径,可能需要先移动现有的数据到新位置,否则原来的镜像和容器可能访问不到。所以步骤应该是先停止Docker,移动数据,再修改配置,然后重启。 另外,用户可能需要检查当前的Docker存储路径,可以用docker info | grep "Docker Root Dir",就像引用[2]里说的。这样用户就能确认当前路径是否正确更改了。 还有,如果用户是通过systemd管理的,可能需要修改服务文件。比如,编辑docker.service文件,在ExecStart后面添加--data-root参数。不过这种方法可能在较新的Docker版本中不推荐,因为推荐使用daemon.json来配置。不过引用[4]提到过重新enable服务和daemon-reload,所以如果用户修改了服务文件,可能需要执行systemctl daemon-reload然后重启服务。 还有一个情况是用户可能使用了符号链接,直接把/var/lib/docker链接到新路径。不过这种方法可能不如修改配置文件可靠,尤其是系统更新或重新安装时可能会有问题。所以还是推荐修改daemon.json。 另外,用户需要注意权限问题,新路径的权限必须让Docker进程能够访问,否则启动会失败。可能需要用chown或chmod调整权限。 总结步骤应该是:停止Docker服务,移动现有数据到新位置,修改配置文件,重启服务,验证路径是否生效。同时,用户可能需要处理磁盘挂载的问题,比如新路径是否在另一个磁盘分区,是否需要挂载点等。 可能用户会遇到的问题包括:配置写错了导致Docker无法启动,这时候需要检查配置文件语法是否正确;或者数据迁移不完整,导致镜像或容器丢失。所以提醒用户备份数据,确保迁移完整。 还有,用户可能想了解如何验证是否修改成功,可以用docker info命令查看Docker Root Dir,如引用[2]所示,这样就能确认是否生效了。 最后,生成相关问题的时候,需要考虑用户可能进一步的问题,比如如何迁移数据,如何检查路径是否正确,或者如何优化存储路径的性能等。</think>### 修改 Docker 默认存储路径的分步指南 #### 方法一:通过修改配置文件 `daemon.json` 1. **停止 Docker 服务** 修改前需先停止 Docker 服务以避免数据损坏: ```bash sudo systemctl stop docker ``` 2. **迁移现有数据(可选)** 若需保留原有镜像、容器等数据,将 `/var/lib/docker` 复制到新路径(如 `/new/path/docker`): ```bash sudo rsync -av /var/lib/docker/ /new/path/docker ``` 3. **修改配置文件** 创建或编辑 Docker 配置文件 `/etc/docker/daemon.json`,添加以下内容(若文件已存在需保留原有配置): ```json { "data-root": "/new/path/docker" } ``` 4. **重启 Docker 服务** 加载新配置并重启服务: ```bash sudo systemctl daemon-reload sudo systemctl start docker ``` 5. **验证配置** 检查存储路径是否生效: ```bash docker info | grep "Docker Root Dir" ``` 输出应为 `Docker Root Dir: /new/path/docker`[^2]。 --- #### 方法二:通过 systemd 服务文件修改 1. **编辑服务文件** 修改 Docker 的 systemd 配置文件 `/lib/systemd/system/docker.service`: ```bash sudo sed -i 's|ExecStart=/usr/bin/dockerd.*|ExecStart=/usr/bin/dockerd --data-root=/new/path/docker|g' /lib/systemd/system/docker.service ``` 2. **重载配置并重启服务** ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` --- #### 方法三:使用符号链接(临时方案) ```bash sudo systemctl stop docker sudo mv /var/lib/docker /new/path/docker sudo ln -s /new/path/docker /var/lib/docker sudo systemctl start docker ``` --- #### 关键注意事项 1. **磁盘空间验证** 新路径需确保有足够空间,可通过 `df -h /new/path/docker` 查看[^2]。 2. **权限问题** 新目录需授予 Docker 用户组权限(通常为 `root:docker`): ```bash sudo chown -R root:docker /new/path/docker ``` 3. **配置冲突** 若同时存在 `daemon.json` 和 systemd 参数,优先以 `daemon.json` 为准。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值