什麼是Docker Compose容器編排
Compose 項目是 Docker 官方的開源項目,負責實作對 Docker 容器叢集的快速編排。從功能上看,跟 OpenStack 中的 Heat 十分類似。
其代碼目前在 https://github.com/docker/compose 上開源。
Compose 定位是 「定義和運作多個 Docker 容器的應用(Defining and running multi-container Docker applications)」,其前身是開源項目 Fig。
通過第一部分中的介紹,我們知道使用一個 Dockerfile 模闆檔案,可以讓使用者很友善的定義一個單獨的應用容器。然而,在日常工作中,經常會碰到需要多個容器互相配合來完成某項任務的情況。例如要實作一個 Web 項目,除了 Web 服務容器本身,往往還需要再加上後端的資料庫服務容器,甚至還包括負載均衡容器等。
Compose 恰好滿足了這樣的需求。它允許使用者通過一個單獨的 docker-compose.yml 模闆檔案(YAML 格式)來定義一組相關聯的應用容器為一個項目(project)。
Compose 中有兩個重要的概念:
服務 (service):一個應用的容器,實際上可以包括若幹運作相同鏡像的容器執行個體。
項目 (project):由一組關聯的應用容器組成的一個完整業務單元,在 docker-compose.yml 檔案中定義。
Compose 的預設管理對象是項目,通過子指令對項目中的一組容器進行便捷地生命周期管理。
Compose 項目由 Python 編寫,實作上調用了 Docker 服務提供的 API 來對容器進行管理。是以,隻要所操作的平台支援 Docker API,就可以在其上利用 Compose 來進行編排管理
Docker Compose檔案格式
Docker Compose使用的是yaml檔案格式,字尾是 .yml
YAML是一種标記語言,很直覺的資料序列化格式
檔案格式及編寫注意事項:
不支援制表符tab鍵縮進,需要使用空格縮進
通常開頭縮進2個空格
字元後縮進一個空格,如冒号、逗号、橫杠
用井号注釋
如果包含特殊字元用單引号引起來
Docker Compose配置常用字段
build dockerfile context:指定Dockerfile檔案名建構鏡像上下文路徑
image:指定鏡像
command:執行指令,覆寫預設指令
container name:指定容器名稱,由于容器名稱是唯一的,如果指定自定義名稱,則無法scale
deploy:指定部署和運作服務相關配置,隻能在Swarm模式使用
environment:添加環境變量
networks:加入網絡
ports:暴露容器端口,與-p相同,但是端口不能低于60
volumes:挂載主控端路徑或指令卷
restart:重新開機政策,預設no,always,no-failure,unless-stoped
hostname:容器主機名
Docker Compose常用指令
build:重新建構服務
ps:列出容器
up:建立和啟動容器
exec:在容器裡面執行指令
scale:指定一個伺服器啟動數量
top:顯示容器程序
logs:檢視容器輸出
down:删除容器、網絡、資料卷和鏡像
stop/start/restart:停止/啟動/重新開機服務
Compose指令說明
基本使用格式
docker-compose [選項] [指令] [參數...]
docker-compose選項
--verbose輸出更多調試資訊
--version列印版本并輸出
-f,--file FILE使用特定的compose模闆檔案,預設為docker-compose.yml
-p,--project-name NAME指定項目名稱,預設使用目錄名稱
編排腳本的結構
編排腳本檔案名要以.yml為字尾結尾
一個完整的編排檔案主要包含三個部分:version(版本)、services(服務)、networks(網絡)
version是指docker-compose的版本,使用docker-compose version指令可以檢視版本資訊
services下的二級标簽可以定義多個服務,用以建立多個服務,其中包含服務名稱,鏡像檔案或者Dockerfile檔案目錄,端口映射,網絡,資料卷挂載
networks,加入指定網絡
實戰:Compose建立nginx服務
1.目錄結構
2.下載下傳compose
3.建立鏡像腳本
4.建立編排腳本
5.建立站點挂載目錄
6.運作容器
