Docker在Ubuntu中的容器编排
导读:在 Ubuntu 上,容器编排通常有三种落地方式:Docker Compose(单机/轻量多容器)、Docker Swarm(Docker 原生集群)、Kubernetes(企业级生产编排)。下面给出各自的适用场景、快速上手与常用命令,便于...
在 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 或重登生效)。
- 安装 Docker Engine 与 Compose 插件:
-
示例 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”]
- web:
- 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-compose.yml):
三、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。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Docker在Ubuntu中的容器编排
本文地址: https://pptw.com/jishu/784009.html
