128 lines
4.2 KiB
YAML
128 lines
4.2 KiB
YAML
---
|
|
- 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) |