npx machina-cli add skill chaterm/terminal-skills/container-ops --openclawDocker 容器操作
概述
Docker 容器的日常操作,包括生命周期管理、资源限制、日志查看等。
容器生命周期
# 运行容器
docker run -d --name myapp nginx
docker run -it --rm ubuntu bash
# 常用参数
docker run -d \
--name myapp \
-p 8080:80 \
-v /host/path:/container/path \
-e ENV_VAR=value \
--restart unless-stopped \
nginx
# 启停容器
docker start/stop/restart container_name
docker pause/unpause container_name
# 删除容器
docker rm container_name
docker rm -f container_name # 强制删除
docker container prune # 清理停止的容器
容器查看
# 列出容器
docker ps # 运行中
docker ps -a # 所有
docker ps -q # 仅 ID
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
# 容器详情
docker inspect container_name
docker inspect -f '{{.NetworkSettings.IPAddress}}' container_name
# 资源使用
docker stats
docker stats container_name
docker top container_name
容器交互
# 进入容器
docker exec -it container_name /bin/bash
docker exec -it container_name sh
# 执行命令
docker exec container_name ls -la
# 查看日志
docker logs container_name
docker logs -f container_name # 实时跟踪
docker logs --tail 100 container_name # 最后 100 行
docker logs --since 1h container_name # 最近 1 小时
资源限制
# 内存限制
docker run -d --memory=512m nginx
# CPU 限制
docker run -d --cpus=1.5 nginx
docker run -d --cpu-shares=512 nginx
# 更新运行中容器
docker update --memory=1g container_name
docker update --cpus=2 container_name
文件操作
# 复制文件
docker cp container_name:/path/file ./local
docker cp ./local container_name:/path/
# 查看文件变更
docker diff container_name
# 导出容器
docker export container_name > container.tar
docker import container.tar myimage:tag
常见场景
场景 1:调试容器
# 1. 查看容器状态
docker inspect container_name | jq '.[0].State'
# 2. 查看日志
docker logs --tail 50 container_name
# 3. 进入容器排查
docker exec -it container_name sh
# 4. 查看进程
docker top container_name
场景 2:容器无法启动
# 查看退出原因
docker inspect container_name | jq '.[0].State.ExitCode'
docker inspect container_name | jq '.[0].State.Error'
# 查看日志
docker logs container_name
# 以交互模式启动排查
docker run -it --entrypoint sh image_name
场景 3:批量操作
# 停止所有容器
docker stop $(docker ps -q)
# 删除所有停止的容器
docker container prune -f
# 删除所有容器
docker rm -f $(docker ps -aq)
故障排查
| 问题 | 排查方法 |
|---|---|
| 容器退出 | docker logs, docker inspect |
| 网络不通 | docker network inspect, 检查端口映射 |
| 磁盘满 | docker system df, docker system prune |
| 内存溢出 | docker stats, 检查 OOMKilled |
| 启动慢 | 检查健康检查配置, 镜像大小 |
Source
git clone https://github.com/chaterm/terminal-skills/blob/main/docker/container-ops/SKILL.mdView on GitHub Overview
container-ops 提供一套明确的 Docker 容器操作能力,帮助你在本地或服务器环境中完成容器的生命周期管理、资源控制、日志查看与数据迁移等常用任务。你将通过 docker run、docker ps、docker logs、docker exec、docker cp、docker update、docker prune 等命令,进行日常运维、排错以及环境资源的高效治理。
How This Skill Works
该技能围绕 Docker 守护进程的核心能力展开,涵盖镜像到容器的生命周期、数据卷与网络的组合使用、以及日志与资源的可观测性。你通过一系列命令实现容器的创建、启动、暂停、重启、停止、删除,以及对运行中的容器进行实时交互、查看状态和资源使用。还会涉及文件拷贝、导出/导入、差异查看以及对运行中容器的微调(update),并通过 prune/系统诊断命令保持主机与资源的健康。
When to Use It
- 本地开发与多容器调试场景
- 运维现有容器,查看日志和状态以诊断问题
- 批量管理容器:停止、删除、清理无用资源
- 在 CI/CD 流程中快速构建、测试和回滚容器化环境
- 需要对容器的资源限制(内存、CPU)进行调优或升级
Quick Start
- 在你的环境中安装并启动 Docker,以确保 daemon 正在运行。
- 运行一个示例容器,例如:docker run -d --name myapp -p 8080:80 nginx,确保容器在后台运行并暴露端口。
- 查看容器状态与详情:docker ps -a;docker inspect myapp。
- 进入容器排查或查看日志:docker exec -it myapp /bin/bash,或 docker logs -f myapp。
Best Practices
- 始终使用有意义的容器名和镜像版本标签,便于追踪与回滚。
- 为数据使用卷(-v/--mount)进行持久化,避免容器生命周期导致数据丢失。
- 为生产容器设置 --restart 策略(如 unless-stopped),实现自愈与自动重启。
- 优先避免在生产环境以 root 用户运行容器,使用最小权限镜像与多阶段构建。
- 定期执行资源清理:docker system df、docker system prune,结合 prune 的安全执行来回收无用对象。
Example Use Cases
- 示例 1:部署一个 nginx 服务并将本地端口映射到主机,确保外部访问可用:docker run -d --name web -p 8080:80 nginx:latest。
- 示例 2:在容器内进行交互排错:docker run -it --rm ubuntu bash,执行诊断命令并查看系统状态。
- 示例 3:诊断容器的日志与退出原因:docker logs -f myapp;docker inspect myapp | jq '.[0].State.ExitCode'。
- 示例 4:批量操作以清理环境:docker stop $(docker ps -q); docker container prune -f; docker rm -f $(docker ps -aq);
- 示例 5:资源限制与平滑升级:docker run -d --name app --memory=512m --cpus=1.0 nginx;随后使用 docker update --memory=1g app 进行升级。
Frequently Asked Questions
Related Skills
monitoring
chaterm/terminal-skills
监控与告警
kubectl-basics
chaterm/terminal-skills
kubectl 基础操作与常用命令
git-advanced
chaterm/terminal-skills
Git 高级操作
pod-management
chaterm/terminal-skills
Kubernetes Pod 管理与调试
CI/CD Pipeline Security Expert
martinholovsky/claude-skills-generator
Expert in CI/CD pipeline design with focus on secret management, code signing, artifact security, and supply chain protection for desktop application builds
datadog-automation
davepoon/buildwithclaude
Automate Datadog tasks via Rube MCP (Composio): query metrics, search logs, manage monitors/dashboards, create events and downtimes. Always search tools first for current schemas.