ubuntu

Docker在Ubuntu上如何进行容器编排

小樊
37
2025-10-16 07:47:46
栏目: 智能运维

Docker在Ubuntu上的容器编排方法
容器编排是管理多容器应用的核心技术,能解决服务依赖、扩展、高可用等问题。在Ubuntu上,常用的编排工具包括Docker Compose(单机/轻量级多容器)Docker Swarm(Docker原生集群编排)Kubernetes(生产级复杂编排),以下是具体操作指南:

一、Docker Compose:单机多容器编排(推荐新手)

Docker Compose通过YAML文件定义多容器应用,适合开发、测试或单机部署场景,操作简单且功能强大。

1. 准备工作:安装Docker & Docker Compose

2. 编写docker-compose.yml文件

在项目目录下创建docker-compose.yml,定义服务、镜像、端口、环境变量等。示例如下:

version: "3.8"  # Compose文件格式版本
services:     # 定义服务(容器)
  web:        # 服务名称(自定义)
    image: nginx:latest  # 使用的镜像
    ports:               # 端口映射(主机:容器)
      - "80:80"
    volumes:             # 卷挂载(持久化数据)
      - ./html:/usr/share/nginx/html
    depends_on:          # 服务依赖(web依赖db启动)
      - db
  db:        # 数据库服务
    image: postgres:13
    environment:         # 环境变量(配置数据库)
      POSTGRES_PASSWORD: example
      POSTGRES_DB: mydb
    volumes:             # 数据卷(持久化数据库文件)
      - db-data:/var/lib/postgresql/data

volumes:     # 定义卷(可选,但推荐用于持久化)
  db-data:

3. 常用命令

4. 优势

二、Docker Swarm:Docker原生集群编排

Docker Swarm是Docker官方提供的集群管理工具,将多台Ubuntu主机组成一个虚拟集群,支持服务的高可用、负载均衡和自动扩展。

1. 准备工作

2. 初始化Swarm集群

管理节点上运行以下命令:

docker swarm init --advertise-addr <管理节点IP>

输出示例:

Swarm initialized: current node (abc123) is now a manager.
To add a worker to this swarm, run the following command:
  docker swarm join --token SWMTKN-1-xxxxxxxxxxxxx <管理节点IP>:2377

3. 加入工作节点

工作节点上运行管理节点输出的docker swarm join命令:

docker swarm join --token SWMTKN-1-xxxxxxxxxxxxx <管理节点IP>:2377

4. 部署服务到Swarm

使用docker service create命令部署服务,示例如下:

docker service create --name my-web --replicas 3 -p 80:80 nginx:latest

5. 管理Swarm服务

6. 优势

三、Kubernetes:生产级复杂编排(可选)

Kubernetes是开源的容器编排平台,适合大规模、复杂应用,提供更强大的自动化管理能力(如自动修复、滚动更新、服务网格等)。但配置较复杂,适合有一定经验的用户。

1. 准备工作

2. 安装kubeadm、kubelet、kubectl

sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本,防止升级

3. 初始化主节点

主节点上运行:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

4. 部署网络插件(如Flannel)

Kubernetes需要网络插件实现Pod间通信,常用Flannel:

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

5. 部署应用

创建Deployment YAML文件(如my-web-deployment.yaml):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-web
  template:
    metadata:
      labels:
        app: my-web
    spec:
      containers:
      - name: web
        image: nginx:latest
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: my-web-service
spec:
  selector:
    app: my-web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer  # 外部访问类型(集群内可用ClusterIP)

6. 优势

选择建议

以上步骤覆盖了Ubuntu上Docker容器编排的主要方法,可根据实际需求选择合适的工具。

0
看了该问题的人还看了