温馨提示×

Docker在Linux中的容器编排如何操作

小樊
41
2026-01-02 20:26:53
栏目: 智能运维

Linux 下 Docker 容器编排实操指南

一、方案选型与适用场景

  • Docker Compose:单机多容器应用的一键编排,适合开发、测试、单机演示;通过docker-compose.yml定义服务、网络、卷,一条命令即可拉起/销毁整套应用。上手快、学习成本低。
  • Kubernetes:生产级容器编排,适合多主机集群、弹性伸缩、自愈、灰度发布、服务发现与 Ingress等复杂场景;生态完善(如 Prometheus、Istio、Argo CD)。
  • Docker Swarm:Docker 原生的轻量级编排,适合已有 Docker 环境、小规模集群、快速上手;与 Engine 深度集成,命令体验一致。
  • 选型建议:个人/小团队优先 Compose;需要高可用与弹性伸缩选 Kubernetes;轻量集群或过渡阶段选 Swarm

二、单机编排 Docker Compose 实操

  • 安装 Docker(Ubuntu 示例)
    • 更新索引并安装依赖:sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
    • 添加 Docker 官方 GPG 与 APT 源,安装 docker-ce:sudo apt-get update && sudo apt-get install -y docker-ce
    • 启动并设置开机自启:sudo systemctl start docker && sudo systemctl enable docker
    • 将当前用户加入 docker 组(免 sudo):sudo usermod -aG docker $USER(需重新登录生效)
  • 安装 Docker Compose(Linux 二进制方式)
    • 下载并赋权:sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose
    • 验证:docker-compose -v
  • 编排示例(Flask + Redis)
    • 目录结构:app.py、requirements.txt、Dockerfile、docker-compose.yml
    • 关键文件
      • app.py
        • from flask import Flask
        • import redis
        • app = Flask(name)
        • cache = redis.Redis(host=‘redis’, port=6379)
        • @app.route(‘/’)
        • def hello(): return f’Hello World! I have been seen {cache.incr(“hits”)} times.\n’
      • requirements.txt:flask redis
      • Dockerfile
        • FROM python:3.7-alpine
        • WORKDIR /code
        • ENV FLASK_APP=app.py
        • RUN pip install -r requirements.txt
        • COPY . .
        • CMD [“flask”, “run”, “–host=0.0.0.0”]
      • docker-compose.yml
        • version: “3”
        • services:
          • web:
            • build: .
            • ports: [“5000:5000”]
          • redis:
            • image: “redis:alpine”
    • 常用命令
      • 启动:docker-compose up -d
      • 查看:docker-compose ps
      • 日志:docker-compose logs -f web
      • 进入容器:docker-compose exec web sh
      • 停止:docker-compose down

三、集群编排 Kubernetes 实操

  • 准备环境(Ubuntu 示例)
    • 安装容器运行时 containerd:sudo apt-get update && sudo apt-get install -y containerd
    • 生成默认配置并启动:sudo mkdir -p /etc/containerd && containerd config default | sudo tee /etc/containerd/config.toml >/dev/null && sudo systemctl restart containerd && sudo systemctl enable containerd
    • 添加 Kubernetes APT 源并安装 kubelet/kubeadm/kubectl:sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl && sudo apt-mark hold kubelet kubeadm kubectl
  • 初始化与配置
    • 初始化控制平面:sudo kubeadm init(按提示完成)
    • 配置 kubectl:mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 部署示例应用(Nginx)
    • 部署:kubectl apply -f - <<EOF
      • apiVersion: apps/v1
      • kind: Deployment
      • metadata:
        • name: nginx-deployment
        • labels:
          • app: nginx
      • spec:
        • replicas: 3
        • selector:
          • matchLabels:
            • app: nginx
        • template:
          • metadata:
            • labels:
              • app: nginx
          • spec:
            • containers:
              • name: nginx
                • image: nginx:latest
                • ports:
                  • containerPort: 80

      • apiVersion: v1
      • kind: Service
      • metadata:
        • name: nginx-service
      • spec:
        • selector:
          • app: nginx
        • ports:
          • protocol: TCP
            • port: 80
            • targetPort: 80
        • type: NodePort
      • EOF
    • 验证:kubectl get pods,svc;访问 http://<任一节点IP>:
  • 本地学习可选 Minikube
    • 安装与启动:curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube && minikube start

四、轻量集群编排 Docker Swarm 实操

  • 初始化与加入
    • 初始化管理节点:docker swarm init
    • 其他节点加入:docker swarm join --token :
  • 部署与运维
    • 部署服务:docker service create --name web --replicas 3 --publish published=8080,target=80 nginx:latest
    • 查看服务:docker service ls;查看任务:docker service ps web
    • 滚动更新:docker service update --image nginx:1.25 web
    • 扩缩容:docker service scale web=5

五、常用运维命令与排错要点

  • Docker Compose
    • 启动/停止:docker-compose up -d / docker-compose down
    • 查看日志与进入容器:docker-compose logs -f / docker-compose exec sh
    • 重建与拉取:docker-compose up -d --build / docker-compose pull
  • Kubernetes
    • 查看与描述:kubectl get pods,svc,deploy -o wide / kubectl describe pod
    • 日志与进入:kubectl logs -f / kubectl exec -it – sh
    • 扩缩与回滚:kubectl scale deploy --replicas=5 / kubectl rollout undo deploy
  • Docker Swarm
    • 节点与任务:docker node ls / docker service ps
    • 服务更新与回滚:docker service update --image nginx:1.25 / docker service rollback
  • 通用排错
    • 镜像拉取失败:检查镜像名/仓库权限/网络;必要时 docker pull
    • 端口冲突:确认宿主机端口未被占用(ss -tulpen | grep <端口>)
    • 健康检查失败:查看容器日志与探针配置,确保应用就绪后再对外暴露

0