---
name: yangge521/docker-deploy
source: https://app.decimal.ai/s/yangge521-docker-deploy@1/SKILL.md
source_sha256: afdb9842fd1b
---

# Docker 容器化部署

## 概述

本技能提供 Docker 容器化部署的完整指南，涵盖 Dockerfile 编写规范、多阶段构建、镜像优化、GPU 容器配置、容器编排等核心实践。

## 使用场景

- Web 服务容器化：Python/Node.js/Go 后端服务打包部署
- GPU 推理容器：YOLO 推理服务容器化，支持 NVIDIA/摩尔线程 GPU
- CI/CD 集成：Docker 镜像自动构建和推送
- 多环境一致性：开发/测试/生产环境统一
- 微服务架构：多容器编排（docker-compose）
- GPU 集群部署：多 GPU 容器化推理服务

## 操作指南

### 1. Dockerfile 多阶段构建

第一阶段（builder）安装依赖，第二阶段只复制运行时文件，可减少 40-60% 镜像体积。使用 python:3.11-slim 作为基础镜像。

### 2. GPU 容器配置

NVIDIA 使用 nvidia/cuda:12.1.0-runtime-ubuntu22.04 基础镜像，运行时加 --gpus all。摩尔线程使用 mthreads/musa 基础镜像。Docker Compose 中通过 deploy.resources.devices 配置 GPU。

### 3. Docker Compose 编排

使用 docker-compose.yml 定义多容器服务：推理服务（--gpus all）、Nginx 反向代理、Redis 缓存、SRS 流媒体。通过 volumes 挂载模型和数据，depends_on 控制启动顺序。

### 4. 镜像优化技巧

| 优化手段 | 效果 | 说明 |
|---------|------|------|
| 多阶段构建 | 减少 40-60% | 只复制运行时文件 |
| Alpine 基础镜像 | 减少 70% | 注意 glibc 兼容性 |
| .dockerignore | 减少构建上下文 | 排除不需要的文件 |
| 合并 RUN 层 | 减少层数 | 连接多个命令 |
| --no-cache-dir | 减少缓存 | pip install 时不缓存 |

### 5. 常用部署命令

docker build 构建镜像，docker run --gpus all 运行 GPU 容器，docker-compose up -d 编排部署，docker logs 查看日志，docker exec 进入容器调试。

## 常见问题与排查

| 问题 | 原因 | 解决方案 |
|------|------|---------|
| GPU 容器无法访问 GPU | NVIDIA Container Toolkit 未安装 | 安装 nvidia-container-toolkit |
| 镜像体积过大 | 未用多阶段构建 | 拆分 builder 和 runtime 阶段 |
| 容器 OOM | 内存限制过小 | 调整 mem_limit |
| 构建缓存失效 | Dockerfile 顺序问题 | 将变化少的层放前面 |
| 容器时区不对 | 未设置时区 | 设置 TZ=Asia/Shanghai |
| 摩尔线程 GPU 不可见 | render 节点未映射 | 映射 /dev/dri/renderDxxx |

## 扩展方向

- **Kubernetes 部署**: 从 Docker Compose 迁移到 K8s
- **镜像扫描**: Trivy/Grype 安全漏洞扫描
- **镜像签名**: Cosign 镜像签名验证
- **多架构构建**: ARM64/AMD64 多架构镜像
- **镜像仓库**: 搭建 Harbor 私有镜像仓库
- **GPU 共享**: 同一 GPU 多容器共享（MIG/vGPU）

## 技能链路

- **nginx-config**: 容器化 Nginx 反向代理
- **cloud-deploy-cn**: 云服务器 Docker 部署
- **ci-cd-cn**: CI/CD 自动构建 Docker 镜像
- **gpu-concurrent**: GPU 容器化并发管理
- **ssl-manager**: 容器化 SSL 证书管理

## 检查清单

- [ ] Dockerfile 使用多阶段构建
- [ ] 添加了 .dockerignore 文件
- [ ] 基础镜像版本固定（非 latest）
- [ ] 非 root 用户运行
- [ ] 健康检查已配置
- [ ] GPU 设备正确映射