Docker Ops

用于 Docker 容器生命周期管理、日志分析与资源清理的自动化工具。

已扫描
适合谁
开发人员、DevOps 运维工程师
不适合谁
无 Docker 使用经验的初学者、仅需简单应用部署的非技术用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @ericlooi504/docker-ops-toolkit

Skill 说明

命令、参数、文件名以原文为准

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 <container> | jq '.[0].State'   # 状态、退出码、健康状况
docker inspect <container> --format '{{json .Mounts}}' | jq .

日志分析

docker logs <container> --tail 100 --since 5m
# 使用 docker-log-inspector.py 进行过滤:
python3 scripts/docker-log-inspector.py <container> --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 <container-name>    # 单个容器

常用操作

Docker Compose 工作流

docker compose up -d                      # 启动服务
docker compose down -v                    # 停止并移除卷
docker compose logs -f --tail 50          # 实时跟踪日志
docker compose ps                         # 查看状态
docker compose exec <service> sh          # 进入服务的 shell
docker compose build --no-cache <svc>     # 无缓存重建
docker compose restart <service>          # 重启单个服务

端口冲突

# 查找占用端口的进程
sudo lsof -i :<port>
docker ps --format '{{.Names}} {{.Ports}}' | grep <port>
# 解决方法:修改 docker-compose.yml 中的端口映射,或停止冲突的容器

资源限制与内存溢出(OOM)

docker inspect <container> --format '{{json .HostConfig.Memory}}'
docker stats <container> --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 <image-id>                    # 删除指定镜像
docker pull <image>:<tag>                # 更新镜像
docker build -t <name>:<tag> .           # 构建镜像
docker build --no-cache -t <name> .      # 强制重新构建

网络故障排查

docker network ls
docker network inspect <network>
# 从容器内测试连通性:
docker exec <container> ping <other-container>
docker exec <container> curl -v http://service:port

数据卷操作

docker volume ls
docker volume inspect <volume>
docker run --rm -v <volume>:/data alpine ls -la /data   # 查看卷内容

故障排查

容器立即退出

docker logs <container>                   # 检查退出原因
docker inspect <container> --format '{{.State.ExitCode}}'
# 常见原因:
#   0  → 正常退出(是否预期?)
#   1  → 应用程序错误(检查日志)
#   137 → SIGKILL(因内存不足被终止)
#   139 → 段错误(segfault)

磁盘空间问题

docker system df                          # 查看磁盘使用概况
du -sh /var/lib/docker/containers/        # 查看容器覆盖层大小
bash scripts/docker-cleanup.sh --aggressive

容器无法解析 DNS

docker exec <container> 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** — 支持预览模式的交互式清理脚本
  • **scripts/docker-health.sh** — 多容器健康状态概览
  • **scripts/docker-log-inspector.py** — 支持正则过滤与严重性摘要的日志分析工具
  • **references/compose-patterns.md** — Docker Compose 模式与实用技巧
E
@ericlooi504

已收录 3 个 Skill

相关推荐