- 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
5.8 KiB
5.8 KiB
name, description, version, tags
| name | description | version | tags | ||||
|---|---|---|---|---|---|---|---|
| docker | Docker容器管理技能 - 镜像构建、容器运行、编排管理、日志查看、网络配置。当用户提到"docker"、"容器"、"镜像"、"docker-compose"时触发。 | 1.0.0 |
|
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 和批量删除命令。