成功解决:docker,一行命令删除所有无名<none>镜像

avatar 2021年7月8日18:10:55 评论 1,672 次浏览

场景描述

今天在jenkins里看了一下镜像,原本我是做的有基础镜像的,也有部分服务没有使用基础镜像,但是在每次拉取的时候镜像名字重叠,总是会出现none名字的镜像,删除的时候太麻烦了,而且随着时间的积累过多的镜像会占用磁盘空间。

解决办法

使用批量删除docker的none镜像,这样就可以在每次更新的时候删除掉无用的镜像,减少磁盘的空间使用率了。

  1. docker rmi -f $(docker images -f dangling=true -q)

详细解释

  1. docker images 列出所有镜像
  2. docker images -f 按照一定的要求输出镜像
  3. docker images -f dangling=true 将所有的悬空镜像输出(dangling 悬空=没有名字),含有状态、时间等等的信息
  4. docker images -f dangling=true -q 将所有悬空镜像输出,并且只输出它们的名字
  5. docker rmi 删除镜像(rmi = remove image
  6. docker rmi -f 强制删除镜像(-f = --force
  7. $() bash运算符,将括号里面的语句当做命令输入并获取结果
  8. docker rmi $() 将美元运算符的结果作为rmi命令的输入,即将$运算结果

更多

  1. docker images -f dangling=true -q | docker rmi -f -
  2. | (竖线)bash的管道运算符
  3. -(横线)bash的标准输入运算符
  4. 两个命令连起来应该是,将第一个命令的输出作为第二个命令的输入

报错

  1. Error response from daemon: inbalid reference format

我查了查,没找到确切的原因,我才是因为,docker rmi -f 不从标准输入中接收参数
因为我试了试echo 123 | echo - 输出是 - ,应该说明了不是所有的命令都能够用横线的,有一些一定要用$

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

滑动解锁才能提交