(2023最新版)Linux在加载或者拉取镜像时报错Error processing tar file: write xxxxxxxxxxx:no space left on device解决方案

(2023最新版)Linux在加载(load)或者拉取(pull)镜像时报错Error processing tar file(exit status 1): write xxxxxxxxxxx: no space left on device

在docker中如果有报错信息一定要使用命令:

sudo dockerd --debug  

来发现问题,这一点很重要,对于docker 来说。

问题描述:

这个错误的意思就是没有多余的空间了,用来存docker数据的磁盘空间不够了,当然我是在load的时候发现这个错误

解决方案:

  1. 扩展linux的硬盘
  2. 删掉一些不常用的容器或者镜像
  3. 使用命令暴力删除(不推荐)

1.1.(方案一)扩展Linux的硬盘

先加入虚拟机设置

在这里插入图片描述

先添加

这里我就不截图了,把每步的选择项列出来

硬盘->SCSI->创建新虚拟磁盘->设置最大磁盘大小(将虚拟磁盘拆分成多个文件)->选择磁盘文件的路径

输入命令初始化

fdisk /dev/sdb
这一步直接跟着推荐走,没有难度

接下来就是对该分区进行初始化,这里面就跟着默认值输入就行了

mkfs -t ext4 /dev/sdb2  #注意最后这个sdb2不一定是这个lsblk -f 对照自己的名字来

此时输入命令lsblk -f查看硬盘的情况,可以看到下图 sdb就是新创建的硬盘,这里我挂载了myNewDir,你们刚刚创建的时候是没有/myNewDir的并且也没有UUID就是那个很长一串数字字母

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nXi3phby-1682586988478)(E:\CSDN-Creation\unpublished\no space left on device\picture\2.png)]

1.1.2.半永久磁盘挂载

  • 优点:简单
  • 缺点:重启虚拟机之后就失效

进行到这一步硬盘已经初始化完成,也可以看到上图的内容,下一步就需要把硬盘挂载到你指定的文件夹下了,

cd   回到根目录
mkdir  /newDisk   选择挂载位置
mount /dev/sdb2  /newDisk 挂载的分区地址 要将该分区挂在到哪个文件夹下
lsblk -f    再查看已经挂载好了

1.1.3.永久挂载磁盘

  • 优点永久挂载

配置系统的配置文件

vi /etc/fstab

两种配置方式

  • 通过文件路径来配置

    /dev/sdb2  /newDisk  ext4  defaults  0  0
    
  • 通过UUID来配置

    lsblk -f   查看UUID就是那一串数字字母
    UUID=xxxx-xxxx-xxxx-xxxx-xxx /myNewDir               ext4    defaults        0 0  
    

配置完之后重新虚拟机查看结果

在这里插入图片描述

还是有这个挂载消息说明成功,没有则失败,失败的检查一下符号,该空格的地方有没有空格

1.1.4.docker更换根目录

首先

sysytemctl start docker 启动
docker info | grep "Docker Root Dir" 查看docker当前的根目录,一般都是var/lib/docker,不过结果按照自己查询的结果来定
systemtcl stop docker

mkdir -p /newDisk/lib  去刚刚挂载的newDisk创建一个用于装docker的文件夹
-p:如果存在,则没有错误,根据需要创建父目录意思就是,没有docker就新创建一个,有的话就在docker下创建lib

最重要的是迁移数据,网上很多教程直接没有这一步,不迁移数据,那docker之前的镜像和容器就会丢失
先yum install rsync  下载rsync:Liunx/Unix下的一个远程数据同步工具。
rsync -avz /var/lib/docker /newDisk/lib  #这个操作会消耗一段时间,如果你有很多容器,镜像或者容器挂载的数据卷

完了之后
编辑 vi /etc/docker/daemon.json 
{
"data-root":"/newDisk/lib/docker"
}
并在大括号内写一下以上消息

结果就是这样,最后一个不要打逗号,千万不要打要不然docker认为你还有配置需要写就会报错,这也是我踩的肯之一

在这里插入图片描述

重新加载
systemctl daemon-reload
重启docker
systemctl restart docker
检查docker是否变更为新目录
docker info | grep "Docker Root Dir"

最后就可以删除旧目录了,当然可以选择不删,这影响不大,顶多就是占用一点磁盘空间

rm -rf /var/lib/docker

踩肯:

  1. 首先/etc/docker/daemon.json这个配置文件内的最后一行配置,不能打逗号
  2. sudo dockerd --debug非常实用docker自带的的查看问题的命令比systemctl status docker.service" 和 “journalctl -xe” 好用太多了

1.2.(方案二)删掉一些不常用的容器或者镜像

docker info 找到 Docker Root Dir这个看后面的目录是什么

或者docker info | grep "Docker Root Dir"这个就是docker的根目录

cd /var/lib/docker 基本上都是在这个目录,但是一切以上面Docker Root Dir为准

du -sh *   查看每项所消耗的硬盘大小

查看这个文件夹下所有类别分别占用的大小,可以看下图

在这里插入图片描述

或者docker system df看看是哪一项占最多下图

在这里插入图片描述

然后再docker system df -v查看内部每一个子项的消耗大小

最后根据需求删除那些不常用,或者不想用的,空间就出来了

1.3.使用命令暴力删除(不推荐)

docker system prune

直接删除所有没运行的容器和清理没有使用的数据,包括镜像数据。如果你之前为了一个容器配置了很多东西,并且只是目前不想运行那千万别使用这个方式

查看docker每个目录占用大小的情况:docker system df

细分每个文件下的每个目录所占大小: docker system df -v

然后选择性删除那些你不用的,网上大多叫使用:docker system prune注意这个命令是直接删除你当前没有运行的容器,这个最好不要用

等下你之前创建的容器又是配环境变量又是挂载数据卷乱七八糟的,结果一个命令都没了

2.扩展

命令介绍du在linux中

Linux官网对于du的解释:Finding out how much space your files are using in Linux is a bit of a chore compared to the Windows world. (right click, properties) However, Linux comes with a handy tool du that will list how much disk space your files occupy.

查明有多少空间你的文件在linux中的使用情况和window环境比较是有点棘手的,然而,linux出现了一个可以列出你的文件占用了多少磁盘空间的简便的工具

简单来说就是提供了一个命令可以查看磁盘的详细信息

一般的组合,du -sh 文件夹 :可以查看文件的大小 如果后面带个*那么就是查看当前文件夹下的子目录的大小,只显示你指定文件夹的子目录的大小

​ du -ha 文件夹:则会列出当前文件夹下的所有子目录及其文件大小,显示所有包括指定文件夹下的的所有文件和文件夹

​ 当然也可以指定看一个文件的信息,那就要写的具体一些 du -sh /xxx/xxx/xxx/xxx.sh

commanddescribe
-hmake it human readable(使其易读)
-stotal space in a directory, but do not display the space that subdirectories use(展示文件总空间,但是不会展示子目录所用的空间).
-ashow how much space a file is using(展示文件夹用了多少空间)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个错误提示意味着在/var/lib/docker/tmp目录下没有足够的空间来写入GetImageBlob594788084文件。根据引用\[1\]提供的解决方案,更新docker.service文件可能没有解决问题。引用\[2\]中提到创建一个配置文件来指定docker的图形存储位置,你可以尝试这个方法来解决问题。具体操作是在/etc/systemd/system/docker.service.d/目录下创建一个名为devicemapper.conf的文件,并在文件中添加以下内容: \[Service\] ExecStart= ExecStart=/usr/bin/dockerd --graph=/docker-root 这将指定docker的图形存储位置为/docker-root。你可以根据需要修改这个路径。然后重新启动docker服务。 另外,你可以使用引用\[3\]中提到的命令df -hl /var/lib/docker来查看/var/lib/docker目录的剩余空间。如果可用空间不足,你可以考虑清理一些不必要的文件或者扩大磁盘容量来解决问题。 #### 引用[.reference_title] - *1* [docker error: no space left on device 问题及解决](https://blog.csdn.net/yourtone/article/details/122842491)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [拉取Docker镜像提示 no space left on device 问题解决](https://blog.csdn.net/qq_39523365/article/details/125599305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jacob_uln

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

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

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

打赏作者

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

抵扣说明:

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

余额充值