溫馨提示×

如何用ubuntu進行docker容器編排

小樊
45
2025-08-29 17:40:05
欄目: 智能運維

Ubuntu環境下Docker容器編排的常用方法
在Ubuntu系統中,容器編排主要通過Docker Compose(輕量級多容器管理)和Kubernetes(生產級大規模編排)實現,以下是具體操作步驟:

一、Docker Compose編排(適合小型/中型多容器應用)

Docker Compose通過docker-compose.yml文件定義多容器服務,簡化了多容器應用的啟動、停止和管理流程。

1. 安裝Docker與Docker Compose

  • 安裝Docker
    更新軟件包索引并添加Docker官方源,安裝Docker CE(社區版):
    sudo apt update
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=amd64 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
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl enable --now docker  # 啟動Docker并設置開機自啟
    
  • 安裝Docker Compose
    下載最新版本的Docker Compose二進制文件并賦予執行權限:
    sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
    驗證安裝:
    docker-compose --version  # 輸出版本號即表示成功
    

2. 編寫docker-compose.yml文件

在項目目錄下創建docker-compose.yml文件,定義服務、鏡像、端口、環境變量等配置。例如,部署一個包含Nginx(Web服務)和PostgreSQL(數據庫)的應用:

version: '3.8'  # 指定Compose文件格式版本
services:
  web:  # Web服務(Nginx)
    image: nginx:latest  # 使用官方Nginx鏡像
    ports:
      - "80:80"  # 將主機80端口映射到容器80端口
    volumes:
      - ./html:/usr/share/nginx/html  # 掛載主機./html目錄到容器內Nginx默認網頁目錄
    depends_on:
      - db  # 依賴db服務(Nginx啟動前需確保db服務已啟動)

  db:  # 數據庫服務(PostgreSQL)
    image: postgres:15-alpine  # 使用輕量級Alpine版PostgreSQL
    environment:
      POSTGRES_DB: mydb  # 創建數據庫名
      POSTGRES_USER: admin  # 創建用戶名
      POSTGRES_PASSWORD: 123456  # 設置密碼
    volumes:
      - postgres_data:/var/lib/postgresql/data  # 持久化數據庫數據到卷
volumes:
  postgres_data:  # 定義數據卷(用于持久化數據)

3. 管理容器服務

  • 啟動服務:在docker-compose.yml所在目錄運行以下命令,后臺啟動所有服務:
    docker-compose up -d
    
  • 查看服務狀態
    docker-compose ps  # 查看運行中的服務
    docker-compose logs -f web  # 查看web服務的實時日志
    
  • 停止/刪除服務
    docker-compose down  # 停止并刪除所有容器、網絡;保留數據卷(若需徹底刪除卷,添加`-v`參數)
    
  • 擴展服務:例如將web服務擴展到3個實例:
    docker-compose up -d --scale web=3
    

4. 關鍵功能說明

  • 數據卷:通過volumes配置實現數據持久化(如數據庫數據),避免容器刪除后數據丟失。
  • 環境變量:通過environment配置傳遞敏感信息(如數據庫密碼),避免硬編碼。
  • 服務依賴:通過depends_on定義服務啟動順序(僅保證啟動順序,不保證服務就緒,需結合健康檢查使用)。

二、Kubernetes編排(適合大型/生產級應用)

Kubernetes(簡稱K8s)是開源的容器編排平臺,提供自動化部署、擴展、負載均衡等功能,適合管理大規模容器集群。

1. 環境準備

  • 安裝Docker:同Docker Compose步驟中的安裝方法。
  • 禁用Swap:Kubernetes要求禁用Swap分區(臨時禁用+永久禁用):
    sudo swapoff -a  # 臨時禁用
    sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab  # 永久禁用(注釋掉fstab中的Swap行)
    
  • 加載內核模塊:允許容器網絡橋接和IP轉發:
    sudo modprobe overlay
    sudo modprobe br_netfilter
    sudo tee /etc/sysctl.d/k8s.conf <<EOF
    net.bridge.bridge-nf-call-iptables=1
    net.bridge.bridge-nf-call-ip6tables=1
    net.ipv4.ip_forward=1
    EOF
    sudo sysctl --system  # 生效配置
    

2. 安裝Kubernetes組件

  • 添加Kubernetes源并安裝組件
    sudo apt update
    sudo apt 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 update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl  # 鎖定版本(避免自動升級)
    

3. 部署Kubernetes集群

  • 初始化Master節點
    在Master節點上運行以下命令,初始化集群(--pod-network-cidr指定Pod網絡CIDR,需與后續網絡插件匹配):
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    
    初始化完成后,會輸出配置kubectl和加入Worker節點的命令(需保存)。
  • 配置kubectl
    將Admin配置文件復制到當前用戶目錄,并設置權限:
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  • 安裝網絡插件
    Kubernetes需要網絡插件實現Pod間通信(如Calico、Flannel),這里以Calico為例:
    kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
    kubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yaml
    
    驗證網絡插件是否運行:
    kubectl get pods -n calico-system  # 所有Pod狀態應為Running
    
  • 加入Worker節點
    在Master節點初始化完成后,會輸出類似以下的加入命令:
    kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxx
    
    在Worker節點上運行該命令,即可將節點加入集群。

4. 驗證集群狀態

  • 查看節點狀態
    在Master節點運行以下命令,確認所有節點狀態為Ready
    kubectl get nodes
    
  • 部署示例應用
    部署一個Nginx應用,創建nginx-deployment.yaml文件:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3  # 創建3個Pod副本
      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
      labels:
        app: nginx
    spec:
      type: NodePort  # 暴露為NodePort類型(外部可通過節點IP訪問)
      ports:
      - port: 80
        targetPort: 80
        nodePort: 30080  # 節點端口(范圍30000-32767)
      selector:
        app: nginx
    
    應用配置:
    kubectl apply -f nginx-deployment.yaml
    
    驗證部署:
    kubectl get pods  # 查看Pod狀態(應為Running)
    kubectl get svc  # 查看Service狀態(NodePort為30080)
    
    訪問應用:在瀏覽器輸入http://<Master節點IP>:30080,即可看到Nginx歡迎頁面。

5. 常用管理命令

  • 查看資源kubectl get pods(Pod)、kubectl get svc(Service)、kubectl get nodes(節點)。
  • 查看詳情kubectl describe pod <pod-name>(查看Pod詳情)、kubectl logs <pod-name>(查看Pod日志)。
  • 刪除資源kubectl delete -f nginx-deployment.yaml(刪除指定配置的資源)、kubectl delete pod <pod-name>(刪除Pod)。
  • 擴展應用kubectl scale deployment nginx-deployment --replicas=5(將Nginx副本數擴展到5個)。

總結

  • Docker Compose:適合快速部署和管理多容器應用(如開發、測試環境),通過docker-compose.yml文件簡化配置,支持服務依賴、數據卷、環境變量等功能。
  • Kubernetes:適合生產級大規模容器集群管理,提供自動化調度、擴展、負載均衡、自我修復等高級功能,但學習曲線較陡峭,需要掌握Pod、Deployment、Service、ConfigMap等核心概念。

根據應用場景選擇合適的編排工具:小型項目推薦Docker Compose,大型生產環境推薦Kubernetes。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女