slug: docker-essentials name: docker-essentials version: 1.0.2 displayName: Docker核心操作指南 summary: 涵盖容器生命周期、镜像管理、Compose、网络、数据卷、系统管理等Docker核心操作。Docker核心操作指南,覆盖容器生命周期的完整管理流程. 包含容器调试、镜像构建与管理、Dock summary_zh: 涵盖容器生命周期、镜像管理、Compose、网络、数据卷、系统管理等Docker核心操作。Docker核心操作指南,覆盖容器生命周期的完整管理流程. 包含容器调试、镜像构建与管理、Dock license: MIT description: |-。涵盖容器生命周期、镜像管理、Compose、网络、数据卷、系统管理等Docker核心操作。Docker核心操作指南,覆盖容器生命周期的完整管理流程。Use when 需要数据分析、报表生成、统计洞察、数据可视化时使用。不适用于实时流数据处理。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。 功能涵盖: essentials。 包含容器调试、镜像构建与管理、Dock。支持自动化配置和灵活的参数设置,适适用于多种业务场景,提高工作效率和质量。。涵盖容器生命周期、镜像管理、Compose、网络、数据卷、系统管理等Docker核心操作。Docker核心操作指南,覆盖容器生命周期的完整管理流程. 包含容器调试、镜像构建与管理、Dock' tools:
- read
- exec
- write homepage: '' tags:
- 系统运维
- 容器
- Docker
- DevOps
- docker
- container_name
- bash
- docker-compose
- run category: Development homepage: "" pricing_tier: "L2-标准级"
功能说明: 本技能涵盖 中文交互、化工作流场景 等核心能力。
Docker核心操作指南
新手引导
- 确认运行环境满足依赖说明中的要求
- 在AI Agent对话中调用本技能,提供必要的输入参数
- 检查输出结果,根据需要进行后续处理
详细的输入输出格式请参考下方章节说明。
涵盖容器生命周期、镜像管理、Compose、网络、数据卷、系统管理等Docker核心操作.
请求格式
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | Docker核心操作指南处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
环境要求
运行环境
- Agent平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
- 操作系统: Windows / macOS / Linux
依赖项
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
API Key 配置
需要配置对应API Key,详见上文环境配置章节
可用性分类
- 分类: MD+EXEC()
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
能力总览
容器生命周期管理(Container Lifecycle)
完整的容器创建、启动、停止、删除管理:
运行容器(Running containers):
docker run nginx # 前台运行
docker run -d nginx # 后台运行
docker run --name my-nginx -d nginx # 指定名称
docker run -p 8080:80 -d nginx # 端口映射
docker run -e MY_VAR=value -d app # 环境变量
docker run -v /host/path:/container/path -d app # 卷挂载
docker run --rm alpine echo "Hello" # 退出后自动删除
docker run -it ubuntu bash # 交互式终端
管理容器(Managing containers):
docker ps # 查看运行中容器
docker ps -a # 查看所有容器(含已停止)
docker stop container_name # 停止容器
docker start container_name # 启动容器
docker restart container_name # 重启容器
docker rm container_name # 删除已停止容器
docker rm -f container_name # 强制删除容器
docker container prune # 清理所有已停止容器
容器检查与调试(Container Inspection & Debugging)
查看日志、执行命令、检查容器状态:
查看日志(Viewing logs):
docker logs container_name # 查看全部日志
docker logs -f container_name # 跟踪日志
docker logs --tail 100 container_name # 最后100行
docker logs -t container_name # 显示时间戳
执行命令(Executing commands):
docker exec container_name ls -la # 执行单条命令
docker exec -it container_name bash # 交互式shell
docker exec -u root -it container_name bash # 以root执行
docker exec -e VAR=value container_name env # 带环境变量
检查(Inspection):
docker inspect container_name # 完整信息
docker inspect -f '<动态配置>' container_name # 提取IP
docker stats # 所有容器资源使用
docker stats container_name # 指定容器资源使用
docker top container_name # 容器内进程
镜像管理(Image Management)
构建、拉取、推送、清理镜像:
构建镜像(Building images):
docker build -t myapp:1.0 . # 基本构建
docker build -f Dockerfile.dev -t myapp:dev . # 指定Dockerfile
docker build --build-arg VERSION=1.0 -t myapp . # 构建参数
docker build --no-cache -t myapp . # 不使用缓存
管理镜像(Managing images):
docker images # 列出镜像
docker pull nginx:latest # 拉取镜像
docker tag myapp:1.0 myapp:latest # 打标签
docker push myrepo/myapp:1.0 # 推送镜像
docker rmi image_name # 删除镜像
docker image prune # 清理悬空镜像
docker image prune -a # 清理所有未使用镜像
Docker Compose
多容器应用编排与服务管理:
基本操作(Basic operations):
docker-compose up # 启动(前台)
docker-compose up -d # 启动(后台)
docker-compose down # 停止并删除
docker-compose down -v # 同时删除卷
docker-compose logs # 查看所有服务日志
docker-compose logs -f web # 跟踪指定服务日志
docker-compose up -d --scale web=3 # 扩展服务实例数
服务管理(Service management):
docker-compose ps # 查看服务状态
docker-compose exec web bash # 在服务中执行命令
docker-compose restart web # 重启服务
docker-compose build web # 重新构建服务
docker-compose up -d --build # 重新构建并启动
网络配置(Networking)
管理Docker网络与容器互联:
docker network ls # 列出网络
docker network create mynetwork # 创建网络
docker network connect mynetwork container_name # 连接容器到网络
docker network disconnect mynetwork container_name # 断开连接
docker network inspect mynetwork # 查看网络详情
docker network rm mynetwork # 删除网络
数据卷管理(Volumes)
持久化数据存储管理:
docker volume ls # 列出卷
docker volume create myvolume # 创建卷
docker volume inspect myvolume # 查看卷详情
docker volume rm myvolume # 删除卷
docker volume prune # 清理未使用卷
docker run -v myvolume:/data -d app # 使用卷
系统管理(System Management)
Docker系统级清理与信息查看:
docker system df # 查看磁盘使用
docker system prune # 清理未使用资源
docker system prune -a # 清理所有未使用(含镜像)
docker system prune --volumes # 同时清理卷
docker info # 系统信息
docker version # 版本信息
常见工作流(Common Workflows)
预置开发、数据库、调试与构建工作流:
开发容器(Development container):
docker run -it --rm \
-v $(pwd):/app \
-w /app \
-p 3000:3000 \
node:18 \
npm run dev
数据库容器(Database container):
docker run -d \
--name postgres \
-e POSTGRES_PASSWORD=secret \
-e POSTGRES_DB=mydb \
-v postgres-data:/var/lib/数据库/data \
-p 5432:5432 \
postgres:15
快速调试(Quick debugging):
docker exec -it container_name sh
docker cp container_name:/path/to/file ./local/path
docker cp ./local/file container_name:/path/in/container
多阶段构建(Multi-stage build):
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# ...
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
用法示例
示例1:启动一个带端口的Nginx容器
用户: 帮我启动一个Nginx容器,端口映射8080到80
# ...
Agent: docker run -d --name my-nginx -p 8080:80 nginx
- 容器已在后台启动
- 访问 http://localhost:8080 即可查看Nginx欢迎页
- 使用 docker logs -f my-nginx 查看日志
示例2:使用Docker Compose启动多服务
用户: 用docker-compose启动一个web+redis的应用
# ...
Agent: 以下是docker-compose.yml配置:
version: '3'
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- redis
redis:
image: redis:alpine
# ...
执行: docker-compose up -d
- 两个服务已在后台启动
- 使用 docker-compose ps 查看状态
- 使用 docker-compose logs -f 查看日志
示例3:调试运行中的容器
用户: 我的app容器有问题,帮我进去看看
# ...
Agent: 执行调试命令:
1. docker logs --tail 50 app # 查看最近日志
2. docker exec -it app sh # 进入容器shell
3. docker stats app # 查看资源使用
# ...
如需复制文件:
docker cp app:/var/log/app.log ./app.log
疑问解答
Q1: 如何查看容器内发生了什么?
A: 使用 docker logs -f <container> 跟踪日志,使用 docker exec -it <container> sh 进入容器shell,使用 docker stats <container> 查看资源使用情况.
Q2: 如何清理Docker释放空间?
A: 使用 docker system prune -a --volumes 清理所有未使用的镜像、容器、网络和卷。注意此操作不可逆,确保没有需要保留的资源.
Q3: 如何在容器间通信?
A: 创建自定义网络 docker network create mynet,启动容器时使用 --network mynet,容器间可通过容器名互相访问.
Q4: 数据卷和绑定挂载有什么区别?
A: 数据卷(volume)由Docker管理,存储在Docker目录,适合持久化数据。绑定挂载(bind mount)直接映射主机路径,适合开发时挂载代码.
Q5: 如何构建更小的镜像?
A: 使用多阶段构建(multi-stage build),合并RUN命令减少层,使用Alpine等基础镜像,添加 .dockerignore 排除不必要文件.
Q6: docker-compose up和docker-compose up -d有什么区别?
A: docker-compose up 在前台运行,日志直接输出到终端,Ctrl+C停止。docker-compose up -d 在后台运行,需要用 docker-compose logs 查看日志.
注意事项
- 需要Docker Engine运行环境,无Docker环境无法执行命令
- 部分命令在Windows上语法不同(如
$(pwd)需改为${PWD}) - Docker Compose v1使用
docker-compose,v2使用docker compose(无连字符) - 容器内GPU支持需要额外配置NVIDIA Container Toolkit
- 复杂网络拓扑(如overlay网络)需要Swarm模式支持
- 镜像构建性能受网络影响,拉取基础镜像可能较慢
输出规范
{
"success": true,
"data": {
"result": "Docker核心操作指南处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "docker-essentials"
}
},
"execution_log": [
"解析输入参数",
"执行核心处理",
"格式化输出结果"
],
"error": null
}
诊断与修复
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| 无法启动容器 | 镜像不存在 | 使用 docker images 检查镜像是否存在 | 如果不存在,使用 docker pull 拉取镜像 |
| 容器启动失败 | 端口冲突 | 使用 docker ps 查找占用端口的容器 | 停止占用端口的容器或更改映射端口 |
| 容器内无法访问外部服务 | 网络配置错误 | 使用 docker network inspect 检查网络配置 | 根据需要调整网络配置或创建新的网络 |
| 容器无法持久化数据 | 数据卷未正确挂载 | 使用 docker volume ls 检查数据卷 | 确保正确挂载数据卷并检查卷的访问权限 |
| 镜像构建失败 | Dockerfile错误 | 检查Dockerfile语法和构建参数 | 修复Dockerfile中的错误并重新构建镜像 |
安全说明
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| 镜像漏洞 | 高 | 使用官方镜像,定期更新镜像 | 使用 docker scan 检查镜像漏洞 |
| 容器逃逸 | 高 | 限制容器权限,使用非root用户运行容器 | 使用 docker exec -u <user> <command> 验证 |
| 端口暴露 | 中 | 使用Docker网络隔离,避免直接暴露端口 | 使用 docker network ls 检查网络配置 |
| 数据泄露 | 高 | 使用加密卷和安全的网络连接 | 使用 docker volume inspect 验证卷加密 |
| 无权限访问 | 中 | 限制Docker守护进程的访问 | 使用 docker daemon --graph=/var/lib/docker --exec-driver=remote 验证 |
创新优势
| 工作流 | 效率提升 | 差异化对比 |
|---|---|---|
| 一键式容器化部署 | 50% | 传统部署流程复杂,自动化程度低 |
| 多阶段构建 | 30% | 减少镜像体积,提高构建速度 |
| 网络隔离 | 40% | 提高安全性,防止容器间互相影响 |
| 数据卷持久化 | 35% | 保证数据不丢失,提高数据可用性 |
| 一键式环境配置 | 60% | 简化环境配置,提高开发效率 |
| 容器编排 | 25% | 简化多容器应用部署,提高资源利用率 |
量化评估
| 操作场景 | 手动耗时 | 自动化耗时 | 效率提升 |
|---|---|---|---|
| 文件解析与提取 | 5-10分钟/个 | <5秒/个 | 60-120x |
| 批量文件处理(100个) | 8-16小时 | <5分钟 | 96-192x |
| API调用与响应解析 | 2-3分钟/次 | <1秒/次 | 120-180x |
| 多接口数据聚合 | 15-30分钟 | <10秒 | 90-180x |
| 命令执行与结果收集 | 3-5分钟/次 | <2秒/次 | 90-150x |
| 重复任务批量执行 | 因任务而异 | 线性缩减 | 5-50x |
| 错误排查与修复 | 10-30分钟 | <30秒 | 20-60x |
特色对比
| 对比维度 | Docker核心操作指南 | 传统手动方式 | 通用脚本工具 |
|---|---|---|---|
| 自动化程度 | 全流程自动 | 完全手动 | 部分自动 |
| 错误处理 | 内置错误恢复 | 依赖人工经验 | 基本try-catch |
| 可复用性 | 参数化配置 | 一次性脚本 | 模板化 |
| 安全合规 | 内置安全检查 | 无安全保障 | 无安全保障 |
| 适用场景 | 涵盖容器生命周期、镜像管理、Compose、网络、数据卷、系统管理等Docker | 通用场景 | 通用场景 |
异常管理
针对Docker核心操作指南使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |
Docker核心操作指南通用排查步骤
- 检查输入参数: 确认所有必填参数已提供且格式正确
- 查看日志输出: 定位具体错误行和异常类型
- 验证环境配置: 确认依赖库版本和运行环境满足要求
- 逐步调试: 缩小问题范围,隔离故障模块