Docker學習(十)Docker容器編排 Docker-compos

local0發表於2021-09-09

![此處輸入圖片的描述][1]


容器編排是什麼

應用一般由單獨容器化的元件組成,須按照一定順序在網路級別進行組織,以使其能夠按照計劃執行,這種對多個容器進行組織的流程稱為容器編排,它主要是對容器之間的依賴關係進行編排

Docke-compose

docker官方提供的工具,強調單機多容器的編排,能力相對有限,只能在一臺宿主機上對容器編排,對於大規模叢集環境中,多臺機器無法支援,在windows, mac 安裝完docker後預設提供docker-compose,但是在windows server , Linux中預設是不提供的,需要自行安裝

示例場景

在一個簡單的應用部署中,如圖

![此處輸入圖片的描述][2]

需要用到 nginx , tomcat , mysql 三個元件,而且這每個元件在部署的時候是有依賴關係的,比如要先有mysql,因為tomcat中的應用需要使用到mysql,最後需要安裝nginx,對tocmcat做負載均衡實現叢集

順序如下:mysql -> tomcat -> nginx

如果是人工處理的話,雖然簡單,但是需要花費長時間, 現在有了docker-compose,就可以對容器進行編排,透過一個yml檔案來維護容器編排的邏輯,再透過docker-compose命令對配置檔案進行編譯解析,就可以實現一個應用的部署

接下來我們使用docker-compose 部署一個開源部落格wordpress

示例一 搭建wordpress開源部落格

整個過程比較簡單

安裝docker-compose

  • 獲取並自動安裝docker-comppose
    sudo curl -L "(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    預設安裝目錄是/usr/local/bin/docker-compose

  • 資料夾授權
    sudo chmod +x /usr/local/bin/docker-compose

    因為要連線國外網站,下載會很慢,可能會被拒絕,多試幾次就好

  • 檢視安裝的版本
    docker-compose -version

![此處輸入圖片的描述][3]

安裝部署開源部落格wordpress

建立目錄mkdir -p /usr/local/docker/wordpress

  • 編寫docker-compose 配置檔案
version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}
  • 配置檔案解讀

  • 解析配置檔案並安裝 docker-compose up -d

    • up 解析執行
    • -d 後臺執行

![此處輸入圖片的描述][4]

  • 執行過程
Creating network "wordpress_default" with the default driver

Creating volume "wordpress_db_data" with default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
......
Status: Downloaded newer image for mysql:5.7

Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
......
Creating wordpress_db_1 ... done
Recreating wordpress_wordpress_1 ... done
  • 檢視建立的應用
    docker ps
    ![此處輸入圖片的描述][5]
    wordpress_wordpress_1 部落格的web應用
    wordpress_db_1 部落格的mysql5.7容器

初始化wordpress

從上面程式看到WEB應用對外暴露的是8000埠
對部落格進行一下初始化
![此處輸入圖片的描述][6]

![此處輸入圖片的描述][7]

![此處輸入圖片的描述][8]

![此處輸入圖片的描述][9]

![此處輸入圖片的描述][10]

到這裡都是個應用上的一些流程,有興趣的可以體驗一下這個部落格,很不錯的

成果展示

到這裡我們已經完成了開源部落格的部署, 整個過程很簡單,整個過程是由docker-compose 這個容器編排工具完成的,透過一個yml配置檔案 ,就完成了一個應用的部署,很大節省了運維人員工作量,整個應用的維護,只需要一個yml配置檔案

參考資料

[docker-compose-install][11]
[QuickStart : compose and wordpress][12]

寫在最後

透過docker-compose部署自己的應用時裡面有很多東西,本文的例子一個很簡單,實際工作中一定不止於此,docker-compose檔案中的內容有很多學問,可以到docker官網上看一下,以mysql為例,如果指定初始化資料庫的指令碼,root使用者的密碼如何指定等,這塊需要用到mysql容器的一些環境變數,這塊內容可以參考[docker-mysql][13]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/132/viewspace-2824795/,如需轉載,請註明出處,否則將追究法律責任。

相關文章