Files
Hermes-Skills/devops/docker/SKILL.md
T
Hermes Skills Manager 6770bc9b9d Initial commit: Hermes Agent skills collection
- Trading skills (OKX, dividend, lottery, quantitative)
- Creative skills (ASCII art, diagrams, video)
- Development skills (GitHub, debugging, TDD)
- Research skills (arXiv, blog monitoring)
- Productivity skills (email, documents, notes)
- MCP integration skills
- Custom user skills
2026-07-05 02:31:15 -04:00

5.8 KiB

name, description, version, tags
name description version tags
docker Docker容器管理技能 - 镜像构建、容器运行、编排管理、日志查看、网络配置。当用户提到"docker"、"容器"、"镜像"、"docker-compose"时触发。 1.0.0
docker
container
devops
infrastructure

Docker 管理技能

Docker容器管理技能 - 镜像构建、容器运行、编排管理、日志查看、网络配置。

触发条件

  • 用户提到 "docker"、"容器"、"镜像"、"docker-compose"
  • 用户要求 "部署"、"运行容器"、"构建镜像"
  • 用户需要 "查看日志"、"容器状态"、"网络配置"

快速参考

镜像管理

# 列出镜像
docker images

# 拉取镜像
docker pull <image>:<tag>

# 构建镜像
docker build -t <name>:<tag> .

# 删除镜像
docker rmi <image>

# 清理未使用镜像
docker image prune -a

容器管理

# 运行容器
docker run -d --name <name> -p <host>:<container> <image>

# 列出运行中的容器
docker ps

# 列出所有容器
docker ps -a

# 停止容器
docker stop <container>

# 启动容器
docker start <container>

# 重启容器
docker restart <container>

# 删除容器
docker rm <container>

# 进入容器
docker exec -it <container> /bin/bash

# 查看日志
docker logs -f <container>

# 查看容器详情
docker inspect <container>

Docker Compose

# 启动所有服务
docker-compose up -d

# 停止所有服务
docker-compose down

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 重建并启动
docker-compose up -d --build

# 扩展服务
docker-compose up -d --scale <service>=<count>

网络管理

# 列出网络
docker network ls

# 创建网络
docker network create <name>

# 查看网络详情
docker network inspect <name>

# 连接容器到网络
docker network connect <network> <container>

# 断开网络
docker network disconnect <network> <container>

数据卷管理

# 列出卷
docker volume ls

# 创建卷
docker volume create <name>

# 查看卷详情
docker volume inspect <name>

# 删除卷
docker volume rm <name>

# 清理未使用卷
docker volume prune

系统管理

# 查看Docker信息
docker info

# 查看磁盘使用
docker system df

# 清理所有未使用资源
docker system prune -a

# 查看Docker版本
docker version

常见场景

1. 部署Web应用

# 运行Nginx
docker run -d --name web -p 80:80 -v ./html:/usr/share/nginx/html nginx:alpine

# 运行Node.js应用
docker run -d --name app -p 3000:3000 -e NODE_ENV=production node-app

2. 运行数据库

# MySQL
docker run -d --name mysql \
  -e MYSQL_ROOT_PASSWORD=root \
  -e MYSQL_DATABASE=mydb \
  -p 3306:3306 \
  -v mysql-data:/var/lib/mysql \
  mysql:8

# PostgreSQL
docker run -d --name postgres \
  -e POSTGRES_PASSWORD=root \
  -e POSTGRES_DB=mydb \
  -p 5432:5432 \
  -v pg-data:/var/lib/postgresql/data \
  postgres:15

# Redis
docker run -d --name redis -p 6379:6379 redis:alpine

3. 运行OctoBot(量化交易)

docker run -d --name octobot \
  -p 80:80 \
  -v octobot-data:/octobot/user \
  drakkarsoftware/octobot:stable

4. 运行Freqtrade

# 下载配置
mkdir freqtrade && cd freqtrade
curl https://raw.githubusercontent.com/freqtrade/freqtrade/main/docker-compose.yml -o docker-compose.yml

# 启动
docker-compose up -d

# 进入容器
docker exec -it freqtrade bash

Dockerfile 最佳实践

# 使用多阶段构建
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

ghcr.io 镜像拉取(中国服务器)

ghcr.io (GitHub Container Registry) 在中国服务器上经常超时。registry-mirrors in daemon.json 只加速 Docker Hub,不加速 ghcr.io。

方案:NJU 镜像代理

# 直接用 NJU 镜像拉取(替换 ghcr.io 前缀)
docker pull ghcr.nju.edu.cn/<owner>/<image>:<tag>

# Tag 回原始名称(让 docker-compose 识别)
docker tag ghcr.nju.edu.cn/<owner>/<image>:<tag> ghcr.io/<owner>/<image>:<tag>

其他 ghcr.io 镜像

  • ghcr.nju.edu.cn — 南京大学镜像(已验证可用)
  • ghcr.mirrors.ustc.edu.cn — 中科大镜像
  • 不保证长期可用,失效时换一个试试

Docker Daemon 代理(拉 Docker Hub 镜像)

如果 Docker Hub 也拉不动,配置 daemon 级代理:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/proxy.conf << 'EOF'
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

⚠️ 代理配置会影响 ghcr.io 镜像拉取(可能变慢),拉完 ghcr.io 后建议移除代理配置再拉 Docker Hub 镜像。

故障排查

容器无法启动

# 查看日志
docker logs <container>

# 查看容器状态
docker inspect <container>

# 检查端口占用
netstat -tulpn | grep <port>

磁盘空间不足

# 查看磁盘使用
docker system df

# 清理未使用资源
docker system prune -a

# 清理构建缓存
docker builder prune

网络问题

# 检查容器网络
docker network inspect <network>

# 测试容器连通性
docker exec -it <container> ping <target>

# 查看端口映射
docker port <container>

快捷操作

# 停止所有容器
docker stop $(docker ps -q)

# 删除所有容器
docker rm $(docker ps -aq)

# 删除所有镜像
docker rmi $(docker images -q)

# 进入最近创建的容器
docker exec -it $(docker ps -lq) /bin/bash

免责声明

⚠️ 生产环境操作前请确认影响范围,谨慎使用 prune 和批量删除命令。