Docker如何在Ubuntu上实现容器编排
导读:在 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
- kind(本地多节点体验)
- 部署示例应用
- 创建部署: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
