--- # Czyszczenie nieużywanych obrazów Docker — tylko na hostach, na których Docker # jest faktycznie zainstalowany (pozostałe hosty są bezpiecznie pomijane). # # Domyślnie usuwa wyłącznie obrazy "dangling" (bez tagu) — bezpieczne, nie rusza # tagowanych obrazów, nawet jeśli akurat nie są używane przez żaden kontener. # # Aby usunąć WSZYSTKIE nieużywane obrazy (także tagowane, nieużywane przez żaden # kontener) — więcej odzyskanego miejsca, ale bardziej agresywne — uruchom z: # -e "docker_prune_all_images=true" - name: Czyszczenie nieużywanych obrazów Docker hosts: all gather_facts: false vars: docker_prune_all_images: false tasks: - name: Sprawdź, czy docker jest zainstalowany ansible.builtin.command: which docker register: docker_check changed_when: false failed_when: false - name: Pomiń — Docker nie jest zainstalowany na tym hoście ansible.builtin.debug: msg: "Docker nie jest zainstalowany na {{ inventory_hostname }} — pomijam." when: docker_check.rc != 0 - name: Zajętość miejsca przez Dockera przed czyszczeniem ansible.builtin.command: docker system df register: docker_df_before changed_when: false when: docker_check.rc == 0 - name: Usuń nieużywane obrazy Docker (dangling) ansible.builtin.command: docker image prune -f register: prune_result changed_when: "'Total reclaimed space: 0B' not in prune_result.stdout" when: - docker_check.rc == 0 - not docker_prune_all_images - name: Usuń WSZYSTKIE nieużywane obrazy Docker (także tagowane) ansible.builtin.command: docker image prune -a -f register: prune_result_all changed_when: "'Total reclaimed space: 0B' not in prune_result_all.stdout" when: - docker_check.rc == 0 - docker_prune_all_images - name: Wynik czyszczenia obrazów ansible.builtin.debug: msg: >- {{ (prune_result_all if docker_prune_all_images else prune_result).stdout_lines | default(['brak danych']) }} when: docker_check.rc == 0