mcpField
D
docker-production

docker-production

github.com/full-stack-skills云与 DevOps3109 次安装4 周前更新
代码仓库

关于 docker-production

面向 Docker 生产部署的指导技能,涵盖单机部署、Swarm 集群、滚动更新、Kubernetes 迁移及监控配置,并说明安全与运维注意事项。

主要功能

  1. 01指导单机 Compose 部署
  2. 02介绍 Swarm 集群与 Stack
  3. 03说明滚动更新和回滚
  4. 04提供 Compose 到 Kubernetes 的迁移指引
  5. 05介绍 Prometheus、cAdvisor 和 Grafana 监控

适用场景

  1. 01部署 Docker Compose 生产服务
  2. 02管理 Swarm 集群与应用更新
  3. 03将 Compose 配置迁移到 Kubernetes
  4. 04为容器服务搭建监控

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/full-stack-skills/docker-skills --skill docker-production

安装后在 Claude Code 中输入/docker-production确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
examples/
01-swarm-stack.md
references/
01-swarm-commands.md
02-k8s-migration.md
03-monitoring-setup.md

详细介绍

Docker 生产环境 — 生产环境部署

关于在生产环境中部署和管理 Docker 的指南。

适用场景

用户提到以下内容时,务必使用此技能:

  • “生产部署”、“production Docker”
  • “docker swarm”、“docker stack”、“swarm cluster”
  • “Kubernetes migration”、“kompose”、“K8s”
  • “零停机部署”、“rolling update”
  • “容器监控”、“监控”、“Prometheus”

Docker Swarm 快速入门

# Initialize cluster
docker swarm init --advertise-addr <MANAGER-IP>

# Join workers (run on worker nodes)
docker swarm join --token <TOKEN> <MANAGER-IP>:2377

# Deploy a stack
docker stack deploy -c docker-compose.yml myapp

# Manage services
docker service ls
docker service scale myapp_web=5
docker service update --image myapp:v2 myapp_web
docker service logs -f myapp_web
Swarm Compose 示例
version: '3.8'
services:
  web:
    image: myapp:${TAG:-latest}
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s
        order: start-first
      rollback_config:
        parallelism: 1
        delay: 10s
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
    ports:
      - "80:8080"

零停机部署

Rolling Update Flow:

┌──────┐  ┌──────┐  ┌──────┐     Old replicas (v1)
│ v1  │  │ v1  │  │ v1  │
└──────┘  └──────┘  └──────┘

docker service update --image myapp:v2 web

Step 1: Start v2
┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐
│ v1  │  │ v1  │  │ v1  │  │ v2  │    ← 1 new
└──────┘  └──────┘  └──────┘  └──────┘

Step 2: Replace one v1 with v2
┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐
│ v1  │  │ v1  │  │ v2  │  │ v2  │    ← 2 new
└──────┘  └──────┘  └──────┘  └──────┘

... until all v2

Kubernetes 迁移

# Convert compose to K8s
kompose convert -f docker-compose.yml

# Output:
# web-deployment.yaml
# web-service.yaml
# ...

# Apply
kubectl apply -f .
ComposeK8s
servicesDeployments + Services
networksNetwork Policies
volumesPersistentVolumeClaims
deploy.replicasDeployment.spec.replicas
secretsSecrets

监控技术栈

cAdvisor + Prometheus + Grafana
# docker-compose.monitoring.yml
services:
  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    ports: ["8080:8080"]
    volumes:
      - /:/rootfs:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /sys:/sys:ro

  prometheus:
    image: prom/prometheus:latest
    ports: ["9090:9090"]
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml

  grafana:
    image: grafana/grafana:latest
    ports: ["3000:3000"]

工作流 — 推荐部署流程

步骤 1:单机部署:compose.yml + restart: unless-stopped + systemd 守护 步骤 2:Swarm 集群:docker swarm init → docker stack deploy -c compose.yml myapp 步骤 3:滚动更新:docker service update --image myapp:v2 + 健康检查 + 回滚 步骤 4:接入监控:Prometheus + cAdvisor + Grafana 绑定额仪表盘 步骤 5:迁移至 K8s:kompose convert → 手动添加资源限制 + 健康检查 → Helm Chart

注意事项 — 常见陷阱

  • Swarm 管理器只有一个:如果唯一的管理器宕机,集群将无法响应。→ 恢复方法:使用 3 个或 5 个管理器;使用 docker node promote <worker> 添加管理器;定期备份 /var/lib/docker/swarm/。
  • 滚动更新健康检查:没有健康检查时,更新可能会部署有问题的容器。→ 恢复方法:在 Dockerfile 中定义 HEALTHCHECK,并配置服务健康检查;使用 --update-failure-action rollback。
  • 未使用卷的数据:生产数据库必须使用卷。容器重启后,若未使用卷,将获得新的文件系统。→ 恢复方法:docker service create --mount type=volume,src=db_data,target=/var/lib/mysql。
  • 直接迁移至 K8s:kompose 只是起点,生成的配置并非可直接用于生产环境的 K8s 配置。→ 恢复方法:运行 kompose convert 后,手动添加资源限制、健康检查、初始化容器,以及 ConfigMap/Secret 引用。

能力边界 — 适用与不适用场景

分类场景说明
✅ 能做单机 Compose 生产部署compose.yml + systemd 守护
✅ 能做Swarm 集群管理init/join/stack deploy/rolling update
✅ 能做K8s 迁移方案kompose + 手动调整 + Helm Chart
✅ 能做生产监控搭建Prometheus + cAdvisor + Grafana + Loki
⚠️ 需条件多数据中心 Swarm需要 overlay 网络 + 低延迟连接
⚠️ 需条件零停机迁移至 K8s需要蓝绿/金丝雀发布策略
❌ 超范围应用代码部署各语言 CI/CD 管道
❌ 超范围K8s 集群搭建请参阅 K8s 官方文档
❌ 超范围数据库高可用DBA 专业领域 + 数据库原生方案

不适用场景

❌ 跳过✅ 改用
开发/调试docker-run
单容器应用docker-run + systemd
从一开始就采用 K8s 原生方案跳过 Swarm,直接使用 K8s
Docker 基础知识docker-basics

安全与稳定性

  • 定期轮换 Swarm 加入令牌。泄露的 worker 令牌可能导致未经授权的节点加入。
  • 在生产环境的所有堆栈中,使用 Docker Secrets 存储所有敏感配置。
  • 在生产环境中为 Docker 守护进程启用 TLS(tlsverify 模式)。
  • 为所有生产服务设置资源限制,以防止嘈杂邻居问题。
  • 定期备份 Swarm Raft 数据:/var/lib/docker/swarm/。
  • 监控节点健康状况,并为节点故障设置告警。

📚 官方文档参考

文档地址
Docker Swarmhttps://docs.docker.com/engine/swarm/
Docker Stackhttps://docs.docker.com/engine/swarm/stack-deploy/
管理指南https://docs.docker.com/admin/
生产环境 Composehttps://docs.docker.com/compose/production/
安全部署https://docs.docker.com/engine/security/
Docker 引擎https://docs.docker.com/engine/

🧭 Docker 技能之旅

📍 你在这里:docker-production — 生产部署

← 上一步:docker-cicd | → 下一步:docker-troubleshooting

FAQ

Q1: 如何快速上手此技能? A: 参考上方的快速开始章节,按步骤操作即可。

Q2: 遇到版本不兼容问题怎么办? A: 检查依赖版本,使用 lock 文件锁定,参考常见陷阱章节。

Q3: 如何在生产环境使用? A: 参考最佳实践章节,确保配置正确,做好监控和日志。

Q4: 性能如何优化? A: 参考性能优化相关文档,使用缓存、索引等手段。

Q5: 如何贡献或反馈问题? A: 在 GitHub 仓库提交 Issue 或 Pull Request。

Q6: 是否支持中文? A: 支持中文文档和中文注释,详见国内适配章节。

评论

支持 Markdown