--- - name: Docker Container Management hosts: all become: yes gather_facts: yes tasks: # 检查 Docker 是否安装 - name: Check if Docker is installed command: which docker register: docker_installed failed_when: false changed_when: false - name: Skip Docker tasks if not installed debug: msg: "Docker not installed on {{ inventory_hostname }}, skipping Docker tasks" when: docker_installed.rc != 0 # Docker 系统信息 - name: Get Docker system info shell: docker system df register: docker_system_info when: docker_installed.rc == 0 - name: Display Docker system usage debug: msg: "🐳 Docker System Usage: {{ docker_system_info.stdout_lines }}" when: docker_installed.rc == 0 # 检查运行中的容器 - name: List running containers shell: docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" register: running_containers when: docker_installed.rc == 0 - name: Display running containers debug: msg: "📦 Running Containers: {{ running_containers.stdout_lines }}" when: docker_installed.rc == 0 # 检查停止的容器 - name: List stopped containers shell: docker ps -a --filter "status=exited" --format "table {{.Names}}\t{{.Status}}" register: stopped_containers when: docker_installed.rc == 0 - name: Display stopped containers debug: msg: "⏹️ Stopped Containers: {{ stopped_containers.stdout_lines }}" when: docker_installed.rc == 0 and stopped_containers.stdout_lines | length > 1 # 检查 Docker 镜像 - name: List Docker images shell: docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" register: docker_images when: docker_installed.rc == 0 - name: Display Docker images debug: msg: "🖼️ Docker Images: {{ docker_images.stdout_lines }}" when: docker_installed.rc == 0 # 检查悬空镜像 - name: Check for dangling images shell: docker images -f "dangling=true" -q register: dangling_images when: docker_installed.rc == 0 - name: Report dangling images debug: msg: "🗑️ Found {{ dangling_images.stdout_lines | length }} dangling images" when: docker_installed.rc == 0 # 检查 Docker 卷 - name: List Docker volumes shell: docker volume ls register: docker_volumes when: docker_installed.rc == 0 - name: Display Docker volumes debug: msg: "💾 Docker Volumes: {{ docker_volumes.stdout_lines }}" when: docker_installed.rc == 0 # 检查 Docker 网络 - name: List Docker networks shell: docker network ls register: docker_networks when: docker_installed.rc == 0 - name: Display Docker networks debug: msg: "🌐 Docker Networks: {{ docker_networks.stdout_lines }}" when: docker_installed.rc == 0 # 检查容器资源使用 - name: Check container resource usage shell: docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}" register: container_stats when: docker_installed.rc == 0 - name: Display container resource usage debug: msg: "📊 Container Stats: {{ container_stats.stdout_lines }}" when: docker_installed.rc == 0 # 检查 Docker 服务状态 - name: Check Docker service status systemd: name: docker register: docker_service_status when: docker_installed.rc == 0 - name: Display Docker service status debug: msg: "🔧 Docker Service: {{ docker_service_status.status.ActiveState }}" when: docker_installed.rc == 0 # 清理建议 - name: Suggest cleanup if needed debug: msg: | 💡 Cleanup suggestions: - Run 'docker system prune -f' to remove unused data - Run 'docker image prune -f' to remove dangling images - Run 'docker volume prune -f' to remove unused volumes when: docker_installed.rc == 0 and (dangling_images.stdout_lines | length > 0 or stopped_containers.stdout_lines | length > 1)