【docker】导入镜像报错磁盘空间不足的解决方法 && 【docker】修改默认的存储路径

本文详细介绍了如何修改Docker的默认存储路径,包括二进制安装和yum安装的两种情况,提供了四种不同的修改方法,以解决因存储空间不足导致的问题。涉及修改系统服务配置文件和Docker配置文件,并给出了每种方法的具体步骤和注意事项。

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

前言

安装docker时,默认的安装位置是/var/lib/docker。
可以用docker info 查看 镜像存放的目录

问题

docker load -i nginx.tar

#报错
no space left device

报错是因为该目录没有磁盘空间

解决方法docker修改默认的存储路径

先看看哪块有空间

df -Th

可以看出/data/目录下是有空间的,我们可以将docker默认存储路径改到/data/下;
当然还有一个很简便的,删除docker默认目录下的多余的文件或多余的容器、镜像来释放空间。

二进制安装的docker修改默认的存储路径

第一种,docker没有任何服务存在

这种就很好解决;
1、配置 /usr/lib/systemd/system/docker.service

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

找到ExecStart这行,将原来的注释掉,更改成如下的形式

[Service]
ExecStart=/usr/bin/dockerd  --graph=/data/docker

2、保存退出,重启docker

systemctl daemon-reload
systemctl restart docker
systemctl enable docker

#查看是否生效
docker info

在这里插入图片描述

#docker存储目录已经变了,然后再次导入镜像
docker load -i nginx.tar
#就不会报错了

第二种,docker里还有服务和数据存在

1、停止docker服务

systemctl stop docker.service

2、在挂载的磁盘目录下创建存放镜像目录

mkdir -p /data/docker

3、迁移镜像文件

mv /var/lib/docker /data/docker

4、配置 /usr/lib/systemd/system/docker.service

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

找到ExecStart这行,将原来的注释掉,更改成如下的形式

[Service]
ExecStart=/usr/bin/dockerd  --graph=/data/docker

5、保存退出,重启docker

systemctl daemon-reload
systemctl restart docker
systemctl enable docker

6、启动成功后,再确认之前的镜像和容器是否还在

docker images

docker ps -a

注意

由于更换了docker 目录,以前下载的镜像需要转移到新目录下,建议直接删除原来的镜像,重新下载。所以这个建议在刚开始下载docker的时候就进行修改,避免后续的问题

yum安装的docker修改默认的存储路径

有两处地方可以修改,第一个/usr/lib/systemd/system/docker.service,第二个/etc/docker/daemon.json

第一种方法:修改/usr/lib/systemd/system/docker.service - --graph方式

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

#找到ExecStart,可以在合适的位置添加--graph=要放的路径

在这里插入图片描述

修改完成之后重新加载docker,并重启docker

systemctl daemon-reload
systemctl restart docker

然后docker info查看路径;

docker info

#找Docker Root Dir

在这里插入图片描述

看到修改到了自己想修改的目录,则修改成功;

第二种方法:修改/etc/docker/daemon.json - graph方式

#进入/etc/docker/daemon.json
vim /etc/docker/daemon.json

#可以看到里面是空的,我们自己来添加就好了,graph后面是你的路径

{
"graph": "/newpath/docker"
}

在这里插入图片描述

修改完成之后重新加载docker,并重启docker

systemctl daemon-reload
systemctl restart docker

然后docker info查看路径;

docker info

#找Docker Root Dir

在这里插入图片描述

看到修改到了自己想修改的目录,则修改成功;

第三种方法:同样修改/usr/lib/systemd/system/docker.service - --data-root方式(支持最新版docker)

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

#找到ExecStart,可以在合适的位置添加--data-root=要放的路径

在这里插入图片描述

修改完成之后重新加载docker,并重启docker

systemctl daemon-reload
systemctl restart docker

然后docker info查看路径;

docker info

#找Docker Root Dir

在这里插入图片描述

看到修改到了自己想修改的目录,则修改成功;

第四种方法:同样修改/etc/docker/daemon.json - data-root方式(支持最新版docker)

#进入/etc/docker/daemon.json
vim /etc/docker/daemon.json

#如果里面是空的加一个大括号和data-root就好了,graph后面是你要修改到的目标路径,如下;
#{
#"data-root": "/data/docker"
#}

#如果有其他配置,那么就按照下面的格式配置,切记添加的时候要给上面一行的结尾加一个逗号,否则会报错;graph后面是你要修改到的目标路径
{
"insecure-registries": ["0.0.0.0/0"],
"registry-mirrors": ["https://zbkz1bx2.mirror.aliyuncs.com"],
"data-root": "/data/docker"
}

在这里插入图片描述

修改完成之后重新加载docker,并重启docker

systemctl daemon-reload
systemctl restart docker

然后docker info查看路径;

docker info

#找Docker Root Dir

在这里插入图片描述

看到修改到了自己想修改的目录,则修改成功;

注意

由于更换了docker 目录,以前下载的镜像需要转移到新目录下,建议直接删除原来的镜像,重新下载。所以这个建议在刚开始下载docker的时候就进行修改,避免后续的问题

* 如果里面有需要的数据将/var/lib/docker移动到目录路径即可。

Docker默认会将镜像存储在系统的默认路径下(如Linux系统通常为`/var/lib/docker`)。如果需要更改这个路径,可以按照以下步骤操作: --- ### **方法一:通过配置文件修改** 1. **停止 Docker 服务** 先确保关闭 Docker 服务: ```bash sudo systemctl stop docker ``` 2. **编辑或创建 Docker 的配置文件** - 对于大多数 Linux 系统,默认的配置文件位置可能是 `/etc/docker/daemon.json`。如果没有该文件,则可以手动创建它。 示例内容: ```json { "graph": "/新的路径/docker" } ``` 或者使用更现代的方式指定数据根目录: ```json { "data-root": "/新的路径/docker" } ``` 将 `"/新的路径/docker"` 替换为你希望设置的新存储路径。 3. **迁移旧的数据到新路径** 如果已经有镜像存在,需将其从原路径移动到新路径: ```bash rsync -aqxP /var/lib/docker/ /新的路径/docker/ ``` 4. **重启 Docker 并验证** 启动 Docker 服务并检查是否生效: ```bash sudo systemctl start docker docker info | grep "Docker Root Dir" ``` 输出应该显示为你刚刚设定的新路径。 --- ### **方法二:直接修改 systemd 配置** 1. 停止 Docker 服务: ```bash sudo systemctl stop docker ``` 2. 创建或编辑 Docker 的 service 文件覆盖规则: 运行命令打开编辑器: ```bash sudo nano /etc/systemd/system/docker.service.d/override.conf ``` 3. 添加以下内容: ```ini [Service] ExecStart= ExecStart=/usr/bin/dockerd --graph="/新的路径/docker" ``` 4. 刷新 systemd 配置并启动 Docker: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` 5. 检查路径变更是否成功: ```bash docker info | grep "Docker Root Dir" ``` --- ### 注意事项 - 新路径需要有足够的磁盘空间,并且建议赋予适当的权限给 Docker 使用。 - 移动过程中务必小心处理正在运行的服务和容器状态,以免导致数据丢失或损坏。 ---
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

A-刘晨阳

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值