加载中...

Docker清理无用镜像及卷组占用的空间


生产过程中,总是会遇到服务器磁盘被docker占满的情况
比如这样

也就跑了几个容器,莫名其妙磁盘就没了::(泪)
于是上网找方案

[root@node01 docker]# docker system df 
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          46        46        14.44GB   435MB (3%)
Containers      121       108       1.359GB   3.478kB (0%)
Local Volumes   32        2         5.273GB   5.273GB (100%)

这个命令可以查看目前我们可以清理的docker缓存,分别为镜像,容器,数据卷

可以执行下面的命令清理

[root@master ~]# docker system prune -a
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N] y

-a 参数清理的更加彻底 可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了……所以使用之前一定要想清楚吶。

清理后发现空间并没有减少 仔细查看发现是32磁盘 但是只有2个再用 在执行这个命令看看

[root@node01 docker]# docker volume ls -qf dangling=true
0d322472e941707dc9cdf72ae21647ace2e866d061781c1b3102f026454ff1bb
0fd37de5d1b7e9a7b047ef7564dc2f7cff9a430e091afaf8b3bce80d96716079
5cf16842c76f2b5ac32a37bb4cff4b1b691a1323b59db01adcf0569966746d91
9cb673514123500c7f6f0c0c777d99813c6489832638c261bfaffb9cea01c30f
23e3eb4e2c4ce36b484278c882a4ff77b8b73a0afcb42f9d4fb4bbd9da04b305
51a3a18fe7339d97627c894d636a07503244f15f05a945f8ba0e326e53bac4fd
61bc3ad6461da6f126e6191509e7964a34c8b9514a2c488462e9b2a465ddd541
89c4921a2c858db86534e0924f5f64786dfcb193b95d98bb468eb2b4e401443c
146ee0f6e0a42cdfa112a69780637f6a28120fdd56d129e3f697c68a01e6791b
176b4fa0c65897c355aafff690bf7a97b419ecf9877b1d518b8574cf86b88971
517bd77537b86937ec43778a171b027ed3200f9ba4405740343dc748a366103b
540c32012f161afee2abab0ea62f9621612c99392d51bbb266c4e8953f8e3302
976d1335e32ea78551c0b8ebf96cd626d5cdae78379a4e3b685672ff30911628
····

可以看到有很多没有挂载的磁盘

可以使用这个命令清理

[root@node01 docker]# docker volume rm $(docker volume ls -qf dangling=true)
0d322472e941707dc9cdf72ae21647ace2e866d061781c1b3102f026454ff1bb
0fd37de5d1b7e9a7b047ef7564dc2f7cff9a430e091afaf8b3bce80d96716079
5cf16842c76f2b5ac32a37bb4cff4b1b691a1323b59db01adcf0569966746d91
9cb673514123500c7f6f0c0c777d99813c6489832638c261bfaffb9cea01c30f
23e3eb4e2c4ce36b484278c882a4ff77b8b73a0afcb42f9d4fb4bbd9da04b305
51a3a18fe7339d97627c894d636a07503244f15f05a945f8ba0e326e53bac4fd
61bc3ad6461da6f126e6191509e7964a34c8b9514a2c488462e9b2a465ddd541

清理完成再次查看

[root@node01 docker]# docker system df 
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          46        46        14.44GB   435MB (3%)
Containers      121       108       1.359GB   3.478kB (0%)
Local Volumes   2         2         0B        0B
Build Cache     0         0         0B        0B

当然也可以手动清理无tag的镜像

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

手动清理关闭的容器

docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm

空间已经下来了 ::(酷)


文章作者: huhuhahei
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 huhuhahei !
评论
  目录