Docker-Compose 容器叢集的編排
阿新 • • 發佈:2021-10-15
Docker-Compose 容器叢集的編排
1、Docker-Compose 概述
2、Docker Compose 環境安裝
Docker-Compose功能: 可以實現單機上的容器叢集編排
1、Docker-Compose 概述:
• Docker-Compose專案是Docker官方的開源專案,負責實現對Docker容器叢集的快速編排。 • Docker-Compose將所管理的容器分為三層,分別是工程(project),服務(service)以及容器(container)。Docker-Compose執行目錄下的所有檔案(docker-compose.yml,extends檔案或環境變數檔案等)
組成一個工程,若無特殊指定工程名即為當前目錄名。一個工程當中可包含多個服務,每個服務中定義了容器執行的映象、引數、依賴。一個服務當中可包括多個容器例項,Docker-Compose並沒有解決負載均衡的問題,
因此需要藉助其它工具實現服務發現及負載均衡,比如 Consul。 • Docker-Compose的工程配置檔案預設為docker-compose.yml,可通過環境變數COMPOSE_FILE或-f引數自定義配置檔案,其定義了多個有依賴關係的服務及每個服務執行的容器。 • 使用一個Dockerfile模板檔案,可以讓使用者很方便的定義一個單獨的應用容器。在工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個Web專案,除了Web服務容器本身,
往往還需要再加上後端的資料庫服務容器,甚至還包括負載均衡容器等。 • Compose允許使用者通過一個單獨的docker-compose.yml模板檔案(YAML 格式)來定義一組相關聯的應用容器為一個專案(project)。 • Docker-Compose專案由Python編寫,呼叫Docker服務提供的API來對容器進行管理。因此,只要所操作的平臺支援Docker API, 就可以在其上利用Compose來進行編排管理。
compose是一個用於定義及允許多個Docker容器的工具,主要是通過一個YAML檔案進行服務配置 使用Docker Compose不再需要使用Shell指令碼來啟動容器 Docker Compose非常適合組合使用多個容器進行開發的場景
YAML 是一種標記語言,它可以很直觀的展示資料序列化格式,可讀性高。類似於 XML資料描述語言,語法比 XML 簡單的很多。YAML 資料結構通過縮排來表示,連續的專案通過減號來表示,
鍵值對用冒號分隔,陣列用中括號 [ ] 括起來, hash 用花括號 { } 括起來。
使用 YAML 時需要注意下面事項:
●不支援製表符 tab 鍵縮排,需要使用空格縮排
●通常開頭縮排2個空格
●字元後縮排1個空格,如冒號 : 、逗號 , 、橫槓 -
●用 # 號註釋
●如果包含特殊字元用單引號 ‘’ 引起來
●布林值必須用引號 “” 括起來
Docker-compose 配置常用欄位:
欄位 描述 build 指定 Dockerfile 檔名,要指定Dockerfile檔案需要在build標籤的子級標籤中使用dockerfile標籤指定 dockerfile 構建映象上下文路徑 context 可以是 dockerfile 的路徑,或者是指向 git 倉庫的 url 地址 image 指定映象 command 執行命令,覆蓋預設命令 container name 指定容器名稱,由於容器名稱是唯一的,如果指定自定義名稱,則無法 scale deploy 指定部署和執行服務相關配置,只能在 Swarm 模式使用 environment 新增環境變數 networks 加入網路 ports 暴露容器埠,與 -p 相同,但埠不能低於 60 volumes 掛載宿主機路徑或命令卷 hostname 容器主機名 restart 重啟策略,預設 no,always,no-failure,unless-stoped
depends_on
在使用Compose時,最大的好處就是少打啟動命令,但一般專案容器啟動的順序是有要求的,
如果直接從上到下啟動容器,可能會因為容器依賴問題而啟動失敗。
例如:在沒啟動資料庫容器的時候啟動應用容器,應用容器會因找不到資料庫就退出。
depends_on 標籤用於解決容器的依賴、啟動先後的問題
no,預設策略,在容器退出時不重啟容器。
on-failure,在容器非正常退出時(退出狀態非0),才會重啟容器。
on-failure:3,在容器非正常退出時重啟容器,最多重啟3次。
always,在容器退出時總是重啟容器。
unless-stopped,在容器退出時總是重啟容器,但是不考慮在 Docker 守護程序啟動時就已經停止了的容器。
Docker-Compose 常用命令:
欄位 描述 build 重新構建服務 ps 列出容器 up 建立和啟動容器 exec 在容器裡面執行命令 scale 指定一個服務容器啟動數量 top 顯示容器程序 logs 檢視容器輸出 down 刪除容器、網路、資料卷和映象 stop/start/restart 停止/啟動/重啟服務
Docker-Compose 檔案結構:
yum install -y tree
tree /opt/compose_nginx
/opt/compose_nginx/
├── docker-compose.yml #建立模板指令碼
├── nginx
│?? ├── Dockerfile #建立容器指令碼
│?? ├── nginx-1.12.0.tar.gz #複製原始碼包
│?? └── run.sh #啟動服務指令碼
└── wwwroot
└── index.html #站點網頁
YAML支援的資料結構
物件,鍵值對的集合 陣列,一組按次序排列的值,又稱序列 純量,單個的,不可再分的值
2、Docker Compose 環境安裝:
Docker Compose 是 Docker 的獨立產品,因此需要安裝 Docker 之後在單獨安裝 Docker Compose
#安裝自古英雄多磨難
rz -E chmod +x /usr/local/bin/docker-compose
mv docker-compose/usr/local/bin/ #檢視版本 docker-compose --version