首页 > 解决方案 > 使用 Ansible 根据使用 docker_prune 的标签删除图像

问题描述

我想删除所有未标有 2 个或更多标签的 docker 图像。由于 Ansible 2.8 有一个docker_prune command,我想将它与 images_filter 选项结合使用,如下所示:

docker_prune:
  debug: yes
  containers: no
  images: yes
  images_filters:
    label: not label1 label2
    dangling: false

docker prune 文档中有一个简单的方法:

docker image prune --filter="label!=label1!=label2"

有没有办法否定命令中的标签选项,或者是在标签列表的帮助下循环 docker_prune 的唯一方法?

标签: dockeransibledevopsdocker-imagedocker-cleanup

解决方案


对不起,我是凭记忆写的。该命令的工作方式如下:

$ docker system prune --help

Usage:  docker system prune [OPTIONS]

Remove unused data

Options:
  -a, --all             Remove all unused images not just dangling ones
      --filter filter   Provide filter values (e.g. 'label=<key>=<value>')
  -f, --force           Do not prompt for confirmation
      --volumes         Prune volumes

因此,它应该有类似的选项:

- name: prune docker
  docker_prune:
    volumes: true
    tagged_images: true
    filters:
    - label!=<key>

当前支持的标签过滤器:

label (label=<key>, label=<key>=<value>, label!=<key>, or label!=<key>=<value>) - only remove containers, images, networks, and volumes with or ( without, in case label!=... is used) the specified labels.

推荐阅读