温馨提示×

如何利用CentOS进行Docker容器编排

小樊
36
2025-12-27 04:39:25
栏目: 智能运维

在 CentOS 上进行 Docker 容器编排的实用路径


一 方案总览与选择建议

  • Docker Compose:单机/多容器应用的轻量级编排,适合开发、测试与小型部署,一条命令即可拉起整套服务。
  • Docker Swarm:Docker 原生的集群编排,上手简单、与 Docker 命令集成良好,适合小型到中型生产或预生产环境。
  • Kubernetes:业界标准的生产级编排,具备自动化部署、弹性伸缩、服务发现、滚动升级等能力,适合中大型与复杂系统。
  • 选择建议:优先用 Compose 快速落地;需要多机集群但复杂度不高时选 Swarm;追求高可用、可扩展与生态时选 Kubernetes

二 使用 Docker Compose 编排多容器应用

  • 安装 Docker(CentOS)
    • 安装依赖与仓库并启动服务:
      • yum install -y yum-utils device-mapper-persistent-data lvm2
      • yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      • yum install -y docker-ce
      • systemctl start docker && systemctl enable docker
  • 安装 Docker Compose(二进制方式)
    • curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
    • chmod +x /usr/local/bin/docker-compose
    • docker-compose --version
  • 示例编排文件 docker-compose.yml
    • version: ‘3’ services: web: image: nginx:latest ports: - “8080:80” volumes: - ./app:/usr/share/nginx/html db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example
  • 常用命令
    • 启动:docker-compose up -d
    • 停止:docker-compose down
    • 查看状态:docker-compose ps
    • 查看日志:docker-compose logs -f
  • 适用场景与要点
    • 适合单机/同机多容器的快速编排;如需在 Swarm/K8s 中复用配置,可结合 Compose 文件到 Stack 的能力(进阶)。

三 使用 Docker Swarm 搭建集群

  • 前提
    • 所有节点安装并启动 Docker;建议各节点间网络互通,并开放 2377/TCP(集群管理)、7946/TCP/UDP(节点发现)、4789/UDP(Overlay 网络)。
  • 初始化与管理
    • 初始化管理节点:docker swarm init --advertise-addr <MANAGER_IP>
    • 加入工作节点:在其他节点执行 docker swarm join --token <MANAGER_IP>:2377
    • 查看节点:docker node ls
  • 部署与扩缩容
    • 部署服务:docker service create --name nginx --replicas 3 -p 80:80 nginx:latest
    • 扩容:docker service scale nginx=5
    • 滚动更新:docker service update --image nginx:1.25 nginx
    • 查看服务任务:docker service ps nginx
  • 适用场景与要点
    • 轻量集群、与 Docker 命令一致、学习成本低;适合快速多机中小规模稳态业务。

四 使用 Kubernetes 编排生产级集群

  • 环境准备(所有节点)
    • 关闭防火墙与 SELinux、禁用交换分区、配置主机名与 /etc/hosts、时间同步(生产以安全合规为准)。
  • 安装组件与初始化
    • 安装 kubelet、kubeadm、kubectl 并启用 kubelet:
      • yum install -y kubelet kubeadm kubectl
      • systemctl enable --now kubelet
    • 初始化控制平面(示例):
      • kubeadm init --pod-network-cidr=10.244.0.0/16
    • 配置 kubectl:
      • mkdir -p $HOME/.kube
      • cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      • chown $(id -u):$(id -g) $HOME/.kube/config
  • 部署网络插件与加入节点
    • 部署 Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • 工作节点加入:执行 kubeadm init 输出的 kubeadm join 命令
  • 部署示例应用与常用操作
    • 部署:kubectl create deployment nginx --image=nginx:latest
    • 暴露服务:kubectl expose deployment nginx --type=NodePort --port=80 --target-port=80
    • 扩容:kubectl scale deployment nginx --replicas=3
    • 查看:kubectl get nodes、kubectl get pods -A
  • 适用场景与要点
    • 生产级可扩展生态完善;学习曲线较陡,建议配合 RBAC、网络策略、存储类、Ingress Controller 等一起落地。

五 快速对比与落地建议

方案 复杂度 典型场景 主要优点 主要局限
Docker Compose 开发/测试、单机多容器 简单、快速、学习成本低 非分布式、缺少集群能力
Docker Swarm 小型到中型集群 原生集成、命令一致、部署快 生态与功能不及 K8s
Kubernetes 中大型与复杂系统 自动化、弹性伸缩、生态完备 部署与运维复杂度高
  • 落地建议
    • 先用 Compose 验证业务;需要多机时上 Swarm;追求高可用与可扩展时迁移到 Kubernetes
    • 生产环境务必考虑:镜像与仓库安全、最小权限 RBAC、网络策略、持久化存储、日志与监控、备份与恢复

0