首页主机资讯Docker如何在Ubuntu上实现容器编排

Docker如何在Ubuntu上实现容器编排

时间2025-12-09 00:25:03发布访客分类主机资讯浏览1146
导读:在 Ubuntu 上实现容器编排的可选路径 Docker Compose:单机多容器编排,用一份 YAML 定义服务、网络、卷,一条命令即可拉起整套应用,适合开发、测试、单机生产。 Docker Swarm:Docker 引擎内置的集群模...

在 Ubuntu 上实现容器编排的可选路径

  • Docker Compose:单机多容器编排,用一份 YAML 定义服务、网络、卷,一条命令即可拉起整套应用,适合开发、测试、单机生产
  • Docker Swarm:Docker 引擎内置的集群模式,提供服务编排、扩缩容、滚动更新、内置负载均衡,适合轻量集群与快速落地。
  • Kubernetes:行业标准容器编排平台,提供自愈、自动扩缩容、复杂网络与策略、生态完备,适合中大型与高可用生产
  • 选型建议:单机优先用 Compose;需要多机简单集群可用 Swarm;追求规模化与生态能力选择 Kubernetes

方案一 Docker Compose 快速上手

  • 安装(Ubuntu 20.04+ 推荐方式)
    • 更新索引并安装依赖
      sudo apt update & & sudo apt install -y curl apt-transport-https ca-certificates gnupg lsb-release
    • 添加 Docker 官方 GPG 与仓库
      curl -fsSL https://download.docker.com/linux/ubuntu/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/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    • 安装 Docker 与 Docker Compose 插件
      sudo apt update & & sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    • 验证
      docker compose version
  • 定义与启动应用(示例)
    • 在项目目录创建 docker-compose.yml version: “3.8” services: web: image: nginx:alpine ports: - “8080:80” volumes: - ./html:/usr/share/nginx/html:ro restart: unless-stopped redis: image: redis:alpine volumes: - redis_data:/data restart: unless-stopped volumes: redis_data:
    • 启动与常用操作
      • 后台启动:docker compose up -d
      • 查看日志:docker compose logs -f
      • 停止/删除:docker compose down
  • 设置开机自启(systemd 方式)
    • 创建服务文件:sudo nano /etc/systemd/system/myapp.service [Unit] Description=My Docker Compose App Requires=docker.service After=docker.service

      [Service] Type=oneshot RemainAfterExit=yes WorkingDirectory=/opt/myapp ExecStart=/usr/bin/docker compose up -d ExecStop=/usr/bin/docker compose down TimeoutStartSec=0

      [Install] WantedBy=multi-user.target

    • 启用并启动:sudo systemctl enable --now myapp.service
      说明:Compose 适合单机多容器应用,配置即代码、运维简单;如需系统级自启动,使用 systemd 管理 Compose 项目是常见做法。


方案二 Docker Swarm 集群编排

  • 初始化 Swarm(在管理节点执行)
    • 初始化:docker swarm init --advertise-addr < 管理节点IP>
    • 查看加入命令:docker swarm join-token worker
  • 部署服务与扩缩容
    • 部署应用栈(示例) version: “3.8” services: web: image: nginx:alpine ports: - “80:80” deploy: replicas: 3 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure
    • 部署:docker stack deploy -c docker-compose.yml mystack
    • 扩容:docker service scale mystack_web=5
    • 查看:docker service ls、docker stack ps mystack
  • 适用场景与特点
    • 优势:原生集成于 Docker Engine、上手快、具备服务编排、负载均衡、滚动更新等能力。
    • 局限:与最新 Compose 规范存在部分差异,生态与功能深度不及 Kubernetes

方案三 Kubernetes 集群编排

  • 单节点快速起步(kind/minikube 任选其一)
    • kind(本地多节点体验)
      • 安装 kind:curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-amd64 & & chmod +x ./kind & & sudo mv ./kind /usr/local/bin
      • 创建集群:kind create cluster --name demo
      • 验证:kubectl cluster-info
    • minikube(本地单节点)
      • 安装 minikube:curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 & & sudo install minikube /usr/local/bin
      • 启动:minikube start
  • 部署示例应用
    • 创建部署:kubectl create deployment web --image=nginx:alpine
    • 暴露服务:kubectl expose deployment web --type=NodePort --port=80
    • 查看访问地址:minikube service web --url 或 kubectl get svc
  • 适用场景与特点
    • 优势:自愈、自动扩缩容、复杂网络与策略、生态完备,适合生产级多环境统一管理。
    • 代价:学习曲线更陡、运维复杂度更高。

运维与最佳实践

  • 配置管理:将镜像标签、副本数、端口等抽离为环境变量/多文件 Compose,便于不同环境复用。
  • 数据持久化:数据库等状态服务使用命名卷/外部存储,避免容器重建导致数据丢失。
  • 高可用:无状态服务优先,使用反亲和/拓扑分散;有状态服务使用 StatefulSet + PV
  • 可观测性:统一接入日志(stdout/fluentd)指标(Prometheus)追踪(Jaeger)
  • 安全:启用镜像签名最小权限 RBAC网络策略Secrets管理。
  • 升级策略:Compose/Swarm 使用滚动更新;Kubernetes 使用 RollingUpdate/Canary
  • 备份与恢复:定期备份持久卷数据集群配置(如 etcd 快照、数据库 dump)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Docker如何在Ubuntu上实现容器编排
本文地址: https://pptw.com/jishu/766535.html
Ubuntu Docker监控如何设置 SELinux在Ubuntu中如何备份

游客 回复需填写必要信息