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

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

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

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

bash 复制代码
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 数据。

bash 复制代码
例如,将数据存储在 /www/docker/:
mkdir -p /www/docker/

3.复制 Docker 数据目录

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

bash 复制代码
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服务

bash 复制代码
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 是否修改为指定目录

再删除原目录

bash 复制代码
cd /var/lib
rm -rf docker

注意:

  • 在执行这些步骤之前,请确保你已备份所有重要的 Docker 数据,以防意外丢失。
  • 在移动数据和更改配置后,务必进行测试以确保一切正常运行。
相关推荐
功德+n8 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭9 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿9 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher10 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家12 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR12 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆12 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w61001046612 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin9999913 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊13 小时前
Docker 入门之网络基础
网络·docker·php