如何根据名称删除docker镜像?

Adi*_*ngh 69 docker

我想删除名称包含给定字符串(imagename)的所有版本的docker图像.
我尝试了以下,但它似乎不起作用:

docker images | grep 'imagename' | xargs -I {} docker rmi

Ram*_*ler 87

请尝试以下方法:

docker rmi $(docker images |grep 'imagename')
Run Code Online (Sandbox Code Playgroud)

Windows Powershell:

docker rmi $(docker images --format "{{.Repository}}:{{.Tag}}"|findstr "imagename")
Run Code Online (Sandbox Code Playgroud)

  • 当前版本的Docker支持这个(没有grep):docker rmi $(docker images'smagename') (10认同)
  • @Charlie我想大多数人都在寻找一种方法来匹配所有匹配'*imagename*'的图像,而不是一个名为'imagename'的图像. (6认同)
  • 我收到以下错误:“docker rmi 需要至少 1 个参数。” (2认同)

Elt*_*man 53

稍微更精确的版本 - 仅对存储库名称进行grepping:

docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
Run Code Online (Sandbox Code Playgroud)

  • 这只删除标记为最新`docker rmi $的图像(docker images --format'{{.存储库}}:{{.Tag}}'| grep'imagename')` (24认同)
  • 这应被视为唯一正确的答案 (5认同)
  • Grep 可以用 docker `--filter` 标志替换。```docker images --filter=reference='imagename:*'``` (5认同)

the*_*yak 24

docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
Run Code Online (Sandbox Code Playgroud)

  • ```docker images --format'{{.存储库}}:{{.标签}}``过滤输出所以只显示repo&tag(即```foo:latest```).```grep'imagename```将这些行过滤为仅包含```imagename```的图像.把它放在```$()```中评估它并传递给外部```docker rmi```,删除那些匹配的图像. (6认同)
  • 你能解释一下这是做什么的吗?随机代码位可能是危险的。 (2认同)
  • 扩展上述内容,您可以删除与确切镜像名称相对应的所有标记镜像,如下所示: `docker rmi -f $(docker images --format '{{.Repository}}:{{.Tag}}' --filter =参考='图像名称:*')'` (2认同)
  • 在 Windows 上“grep”不存在(cmd 或 powershell) 以下可以在寡妇上使用 `docker rmi $( docker images --format '{{.Repository}}:{{.Tag}}' | Select-String -模式'图像名称')` (2认同)

udo*_*dan 11

docker images实际上使用第一个位置参数作为图像名称来过滤.不需要grep和awk.该-q选项将仅返回可以输入的匹配图像ID docker rmi.

docker rmi --force $(docker images -q imagename | uniq)
Run Code Online (Sandbox Code Playgroud)


小智 7

只需--force在命令末尾添加即可.喜欢:

sudo docker rmi <docker_image_id> --force

为了使其更智能,您可以在删除图像之前停止任何正在运行的容器:

sudo docker stop $(docker ps | grep <your_container_name> | awk '{print $1}')

sudo docker rm $(docker ps | grep <your_container_name> | awk '{print $1}')

sudo docker rmi $(docker images | grep <your_image_name> | awk '{print $3}') --force
Run Code Online (Sandbox Code Playgroud)

docker ps,$ 1是第1列,即docker容器id,$ 3是第3列,即docker image id


Rea*_*pig 6

我发现我的答案更简单。

例如,您的图像名称是python_image.

那么你的代码应该是

docker rmi $(docker images --filter=reference='python_image' --format "{{.ID}}")

我希望这有帮助。


Giu*_*oso 5

对我来说工作(Docker 版本 19.03.5):

docker rmi $(docker images 'imagename' -q)
Run Code Online (Sandbox Code Playgroud)

命令“ docker images 'imagename' -q ”将列出单引号参数的所有图像ID,因此将其与docker rmi(或用于强制的docker rmi -f)连接它将删除所有具有选定名称的图像