温馨提示×

如何使用Debian Docker进行容器编排

小樊
45
2025-12-28 16:52:12
栏目: 智能运维

在 Debian 上使用 Docker 进行容器编排的实用指南

一 环境准备

  • 安装 Docker Engine(Debian 稳定仓库或官方仓库均可):
    • 更新索引并安装依赖:sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
    • 添加 Docker 官方 GPG 密钥与 APT 源(使用 keyring 更安全): curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo “deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    • 安装并启动:sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io && sudo systemctl start docker && sudo systemctl enable docker
    • 验证:sudo docker run --rm hello-world
  • 安装 Docker Compose(推荐插件方式,便于与 Docker CLI 集成):sudo apt-get install -y docker-compose-plugin
  • 非 root 使用与开机自启:sudo usermod -aG docker $USER && newgrp docker(或重新登录),确保 systemd 已启用 Docker 服务。

二 单机多容器编排 Docker Compose

  • 基本流程与常用命令:
    • 在项目根目录创建 docker-compose.yml(示例见下节),执行:docker compose up -d(后台启动)、docker compose ps(查看状态)、docker compose logs -f(实时日志)、docker compose exec web bash(进入容器)、docker compose down(停止并清理容器与网络,加 -v 同时清理卷)。
  • 示例 docker-compose.yml(Nginx + PostgreSQL,数据持久化与重启策略): version: ‘3.8’ services: web: image: nginx:latest ports: - “80:80” volumes: - ./html:/usr/share/nginx/html depends_on: - db restart: always db: image: postgres:13 environment: POSTGRES_USER: admin POSTGRES_PASSWORD: secret POSTGRES_DB: mydb volumes: - pg_data:/var/lib/postgresql/data restart: always volumes: pg_data:
  • 要点:使用命名卷(如 pg_data)持久化数据库;设置 restart: always 提升可用性;depends_on 仅保证启动顺序,不等待就绪,生产可用健康检查或应用内重试逻辑增强稳健性。

三 多机集群编排 Docker Swarm

  • 适用场景:轻量级集群、快速搭建、与 Docker Engine 深度集成。
  • 初始化与管理:
    • 在管理节点初始化:docker swarm init --advertise-addr <管理节点IP>
    • 工作节点加入:docker swarm join --token <令牌> <管理节点IP>:2377
    • 部署服务与扩缩容:
      • docker service create --name nginx --replicas 3 -p 80:80 nginx:latest
      • docker service scale nginx=5
      • docker service ls、docker service rm nginx
  • 说明:Swarm 提供内置的负载均衡与服务发现,适合 3–5 节点的小团队或过渡方案。

四 大规模编排 Kubernetes 本地开发 Minikube

  • 适用场景:企业级、复杂微服务、自动扩缩容与滚动升级。
  • 快速起步(Debian 主机):
    • 安装 Minikube:curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
    • 启动集群:minikube start --driver=docker
    • 安装 kubectl:sudo apt update && sudo apt install -y kubectl
    • 部署示例应用:
      • kubectl create deployment node-app --image=my-node-app:latest
      • kubectl expose deployment node-app --type=NodePort --port=3000
      • kubectl get pods、minikube service node-app(自动打开浏览器访问)
  • 说明:Kubernetes 提供自我修复、自动扩缩容、服务发现与滚动升级等高级能力,适合高可用与弹性伸缩场景。

五 工具选择与自动化建议

  • 工具选择建议:
    • 快速搭建单主机多容器(开发/测试/小型服务):优先 Docker Compose
    • 管理小型 Docker 集群(约 3–5 节点):选择 Docker Swarm
    • 大规模、复杂微服务与高可用需求:采用 Kubernetes
  • 自动化与运维要点:
    • CI/CD:在 GitHub Actions/GitLab CI 中构建镜像并推送到仓库,目标机通过 SSH 执行 docker compose pull && docker compose up -d --force-recreate 完成零停机或快速回滚。
    • 镜像自动更新:使用 Watchtower 自动拉取新镜像并重启容器(例如每 30 分钟检查一次): docker run -d --name watchtower -e WATCHTOWER_POLL_INTERVAL=1800 -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
    • 监控与日志:采用 Prometheus + Grafana 监控容器指标,使用 Fluentd/Elasticsearch 集中收集与分析日志,便于故障定位与容量规划。

0