📦 Docker Ops — Docker 运维
v1.0.0Docker 容器生命周期管理、健康检查、日志分析、清理、Compose 编排和故障排除。当 Codex 需要管理 Docker 时使用。
运行时依赖
安装命令
点击复制技能文档
Docker Ops 概述 Docker 容器生命周期管理、健康检查、日志分析、清理、Compose 编排和故障排除。 当 Codex 需要管理 Docker 容器、调试运行服务或清理 Docker 资源时使用。
快速入门 前置条件 Docker Engine(docker CLI) docker compose 插件(用于 compose)
检查正在运行的容器 docker ps -a --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}\t{{.Image}}' docker stats --no-stream # 实时资源使用情况
检查容器 docker inspect <容器> | jq '.[0].State' # 状态、退出代码、健康状况 docker inspect <容器> --format '{{json .Mounts}}' | jq .
日志分析 docker logs <容器> --tail 100 --since 5m # 使用 docker-log-inspector.py 进行筛选: python3 scripts/docker-log-inspector.py <容器> --since 30m --filter ERROR --summary
清理未使用的资源 # 标准清理 bash scripts/docker-cleanup.sh # 强制清理(移除卷和构建缓存) bash scripts/docker-cleanup.sh --aggressive # 预览 bash scripts/docker-cleanup.sh --dry-run
健康检查 bash scripts/docker-health.sh # 所有容器 bash scripts/docker-health.sh <容器名称> # 单个容器
常见任务 Docker Compose 工作流 docker compose up -d # 启动服务 docker compose down -v # 停止并移除卷 docker compose logs -f --tail 50 # 跟踪日志 docker compose ps # 状态 docker compose exec <服务> sh # 进入服务 shell docker compose build --no-cache <服务> # 重新构建无缓存 docker compose restart <服务> # 重启服务
端口冲突 # 查找占用端口的进程 sudo lsof -i :<端口> docker ps --format '{{.Names}} {{.Ports}}' | grep <端口> # 解决:更改 docker-compose.yml 中的端口映射或停止冲突容器
资源限制和 OOM docker inspect <容器> --format '{{json .HostConfig.Memory}}' docker stats <容器> --no-stream # 解决:在 docker-compose.yml 中添加 # deploy: # resources: # limits: # memory: 512M # cpus: '0.5'
镜像管理 docker images --format 'table {{.Repository}}\t{{.Tag}}\t{{.Size}}\t{{.CreatedSince}}' docker image prune -a # 移除所有未使用的镜像 docker rmi <镜像 ID> # 移除特定镜像 docker pull :<标签> # 更新镜像 docker build -t <名称>:<标签> . # 构建镜像 docker build --no-cache -t <名称> . # 强制重新构建
网络故障排除 docker network ls docker network inspect <网络> # 测试容器间的连接性: docker exec <容器> ping <其他容器> docker exec <容器> curl -v http://服务:端口
数据卷 docker volume ls docker volume inspect <卷> docker run --rm -v <卷>:/data alpine ls -la /data # 检查卷内容
故障排除 容器立即退出 docker logs <容器> # 检查退出原因 docker inspect <容器> --format '{{.State.ExitCode}}' # 常见原因: # 0 → 清理退出(预期?) # 1 → 应用程序错误(检查日志) # 137 → SIGKILL(OOM 杀死) # 139 → 段错误
磁盘空间问题 docker system df # 磁盘概述 du -sh /var/lib/docker/containers/ # 容器 overlay 大小 bash scripts/docker-cleanup.sh --aggressive
容器无法解析 DNS docker exec <容器> cat /etc/resolv.conf # 解决:在 docker-compose.yml 中添加 # dns: # - 8.8.8.8 # - 1.1.1.1
权限错误 # 将用户添加到 docker 组 sudo usermod -aG docker $USER && newgrp docker
资源 scripts/docker-cleanup.sh — 交互式清理,支持 dry-run 模式 scripts/docker-health.sh — 多容器健康概述 scripts/docker-log-inspector.py — 正则筛选 + 严重程度总结日志 references/compose-patterns.md — Docker Compose 模式和配方