温馨提示×

Docker在Ubuntu中的容器编排

小樊
36
2025-12-30 04:45:03
栏目: 智能运维

在 Ubuntu 上,容器编排通常有三种落地方式:Docker Compose(单机/轻量多容器)、Docker Swarm(Docker 原生集群)、Kubernetes(企业级生产编排)。下面给出各自的适用场景、快速上手与常用命令,便于你按规模与复杂度选型与实施。


一、方案速览与选型建议

工具 适用场景 核心特点 学习难度
Docker Compose 开发、测试、单机或少量主机部署 一份 YAML 定义多服务;命令简单;快速起停与调试
Docker Swarm 中小规模集群、需要快速高可用 原生集成 Docker CLI;几分钟即可成集群;内置负载均衡 低-中
Kubernetes 大规模、复杂微服务、强可观测与自动化 声明式 API、自动修复与滚动升级、生态完善 中-高
  • 选型建议:
    • 个人项目/小型服务优先用 Compose
    • 多节点且追求“开箱即用”的集群可用 Swarm
    • 需要弹性伸缩、精细调度与丰富生态的生产环境选择 Kubernetes

二、Docker Compose 快速上手(单机多容器)

  • 安装 Docker 与 Compose 插件(Ubuntu 22.04/24.04 推荐方式)

    • 安装 Docker Engine 与 Compose 插件:
      • sudo apt-get update
      • sudo apt-get install -y ca-certificates curl gnupg lsb-release
      • sudo install -m 0755 -d /etc/apt/keyrings
      • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
      • echo “deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      • sudo apt-get update
      • sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    • 验证:docker --version 与 docker compose version(注意是“compose”而非“docker-compose”)
    • 可选:将当前用户加入 docker 组以避免每次 sudo(newgrp docker 或重登生效)。
  • 示例 compose 文件与常用命令

    • 示例(docker-compose.yml):
      • version: “3.8”
      • services:
        • web:
          • image: nginx:latest
          • ports: [“80:80”]
          • volumes: [“./html:/usr/share/nginx/html”]
        • db:
          • image: postgres:13
          • environment:
            • POSTGRES_PASSWORD=example
            • POSTGRES_DB=mydb
          • volumes: [“db-data:/var/lib/postgresql/data”]
      • volumes:
        • db-data:
    • 常用命令:
      • 启动:docker compose up -d(加 --build 可在构建镜像后启动)
      • 查看:docker compose ps
      • 日志:docker compose logs -f
      • 停止:docker compose down
      • 扩缩:docker compose up -d --scale web=3(注意有状态服务扩缩需谨慎)

三、Docker Swarm 快速上手(多节点集群)

  • 前提与网络

    • 至少 2 台 Ubuntu 主机(1 管理节点 + 1+ 工作节点),安装 Docker Engine
    • 开放端口:2377/tcp(集群管理)、7946/tcp/udp(节点发现)、4789/udp(覆盖网络 VXLAN)
  • 初始化与加入集群

    • 管理节点:docker swarm init --advertise-addr <管理节点IP>
    • 工作节点:执行上条命令输出的 docker swarm join … 令牌命令
    • 查看节点:docker node ls
  • 部署与运维

    • 部署服务:docker service create --name nginx --replicas 3 -p 8080:80 nginx:latest
    • 查看服务:docker service ls
    • 滚动更新:docker service update --image nginx:1.25 nginx
    • 扩缩容:docker service scale nginx=5

四、Kubernetes 快速上手(生产级编排)

  • 安装与初始化(单主示例)

    • 安装组件:sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl
    • 初始化:sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    • 配置 kubectl:
      • mkdir -p $HOME/.kube
      • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      • sudo chown $(id -u):$(id -g) $HOME/.kube/config
    • 部署网络插件(如 Calico):kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    • 加入工作节点:kubeadm join : --token --discovery-token-ca-cert-hash sha256:
  • 部署示例应用

    • 使用 Deployment 与 Service 的 YAML(如 nginx-deployment.yaml)进行声明式部署:kubectl apply -f nginx-deployment.yaml
    • 常用:kubectl get pods,svc,deploy 等

五、实践要点与常见问题

  • 持久化与配置

    • 数据库等状态服务务必使用 Volumes/Bind Mounts 持久化数据;敏感信息用 Secrets 或环境文件管理。
  • 网络与端口

    • Swarm 使用 覆盖网络 实现跨主机服务通信;Kubernetes 使用 Pod 网络Service 抽象。
  • 安全与防火墙

    • Docker 暴露端口可能绕过 UFW 默认策略,可在 iptables 的 DOCKER-USER 链中添加精细化规则以限制来源网段访问。
  • 扩展与升级

    • Compose 扩缩容便捷;Swarm/Kubernetes 支持滚动升级与副本扩缩,建议配合健康检查与就绪探针。
  • 选型落地

    • 个人/小团队优先 Compose;需要多节点且快速交付选 Swarm;追求弹性、可观测与生态选 Kubernetes

0