我知道如何使用shell删除所有图像:
- shell: |
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
exit 0
此外,我可以用docker_image
通过名称删除图像:
- name: Remove image
docker_image:
state: absent
name: {{image_name}}
但是,有没有一种方法可以使用docker_image
模块或任何其他用于使用docker的Ansible模块删除所有图像?
您必须分多个步骤来完成,就像您的子shell正在执行的那样:
- 使用模块
docker_host_info
列出docker对象,包括图像和容器 - 使用模块
docker_container
移除所有这些容器 - 使用模块
docker_image module
删除所有这些图像
因此,在Ansible:中
- docker_host_info:
images: yes
containers: yes
register: docker_objects
- docker_container:
name: "{{ item.Id }}"
state: absent
loop: "{{ docker_objects.containers }}"
loop_control:
label: "{{ item.Id }}"
- docker_image:
name: item.RepoTags | first
state: absent
force_absent: yes
loop: "{{ docker_objects.images }}"
loop_control:
label: "{{ item.RepoTags | first }}"