docker “no space left on device

2021-10-09  本文已影响0人  逍遥_yjz

问题:docker “no space left on device”

在centos7 环境上使用<docker pull 镜像> 命令时遇到了 “no space left on device”可能是存储镜像的路径磁盘满了

报错:

failed to register layer: Error processing tar file(exit status 1): write /home/ym/Python-3.6.5/Modules/_elementtree.c: no space left on device

里面说python 安装包的一些问题,不用管这,重点是后面。

1. 首先查看服务器硬盘空间

执行指令

df -h
image-20211009200556344

可以看到空间不足,但是我们是在docker执行命令造成的情况,因此来docker查看信息

2. 查看docker 信息

docker info
image-20211009201229212

3. 查看docker根路径的磁盘占用率
由上可知我们docker的磁盘占有率已经满了,需要清理

[root@iz2zejf0fjkrh3aalbiatoz ~]# df -h /var/lib/docker/
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   39G     0 100% /

4. 清理无效数据文件
切换到docker根路径,查找占用空间大的文件,并根据情况清理文件

[root@iz2zejf0fjkrh3aalbiatoz ~]# cd /var/lib/docker
[root@iz2zejf0fjkrh3aalbiatoz ~]# ll -h

也可以全部清除

删除/var/lib/docker/目录下文件,最好提前做个备份,可以恢复。

注意:再删除/var/lib/docker/下目录时,需要将docker服务停止。

systemctl stop docker
rm -rf systemctl start docker

5. 清理docker环境已经停止的容器

查看所有已经停止的容器

docker ps -a|grep Exited
image-20211009202446830

方法一:删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)

docker rm $(docker ps -a -q)

方法二:根据容器的状态,删除Exited状态的容器

docker rm $(docker ps -qf status=exited)

方法三:docker 1.13版本以后,可以使用 docker system 或 docker container命令清理容器。

docker container prune删除已停用容器

docker container prune
[root@iz2zejf0fjkrh3aalbiatoz]# docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
e2c332ba5966e682819a0204b8db383bc02fb93d7f82318e767a2146d49e79ff
cca593f33f9bbb0a8d532b1ae05b4b714243f59f5e332c68322c8d973bcd139f
...
e02183e21c9f5a8061021e441ffc52373b17d0e9a18d4f75409fec7f5ed328ac
66ac47f088b67ae01c57c4f7fcf9d369cbb73d9556d2e8b4675fbbb2a7958792
9801b8f022b88525df10f3e51a800367239726210ebb5d6c1ec5b3cdeb16cb4d
9af5984dd779804096c57958e615ea5dbdf25d3f1f17df536b8d6efa3d506c63
ba4fbfe9205149f08b5392b09fb54a7f6718451d6f69eb4236c0dd585cf33814

Total reclaimed space: 13.78GB

docker system prune删除关闭的容器、无用的数据卷和网络,以及dangling镜像

[root@iz2zejf0fjkrh3aalbiatoz]# docker system prune
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all build cache
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

docker system prune -a 命令清理得更加彻底,可以将没有容器使用Docker的镜像都删掉

[root@iz2zejf0fjkrh3aalbiatoz yu]# docker system prune -a
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all images without at least one container associated to them
        - all build cache
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

方法四:根据容器的ID删除容器
显示所有状态为Exited的容器,取出这些容器的ID

docker ps -a|grep Exited|awk '{print $1}'

根据ID删除容器

docker rm `docker ps -a|grep Exited|awk '{print $1}'`
上一篇 下一篇

猜你喜欢

热点阅读