介紹過Docker Volume和Docker Network的運作原理和使用方式,以及建置Docker映像檔的Dockerfile撰寫技巧,接下來說明部署多容器架構工具Docker Compose,以及如何編寫相關之部署架構定義檔(docker-compose.yml),並可結合Docker Network和Docker Volume功能,輕鬆地就可以架設出完整的軟體系統架構。
help
顯示指令的詳細說明,每項指令都可透過此方式查詢說明。
images
容器啟動後,此指令可列出docker-compose.yml定義檔中的映像檔資訊,包括容器名稱、映像檔名稱、標籤版本、映像檔ID以及映像檔容量。
kill
直接刪除已啟動的容器,等同「docker kill」,使用kill只會刪除容器,其他Network、Volume資源並不會刪除,建議使用down。
logs
等同「docker logs」,顯示定義檔所執行之相關容器的標準輸出資訊。
pause
等同「docker pause」,將已啟動的容器服務之程序暫停。
port
等同「docker port」,查詢已啟動容器的連接埠對應情況,例如「docker-compose port wordpress 80」。
ps
等同「docker ps」,查看docker-compose.yml定義檔所啟動的容器狀況、連接埠對應。
pull
等同「docker pull」,拉取docker-compose.yml中image宣告的映像檔。
push
等同「docker push」,推送docker-compose.yml中build宣告的自建映像檔到Docker Hub。
restart
功能等同「docker restart」,重新啟動定義檔中的所有容器。
rm
等同「docker rm」,移除已停止運作的容器。
run
雖名為run,但與「docker run」用法不同,主要是用來除錯定義檔中的容器,例如「docker-compose run db」,會使用db的映像檔啟動一個容器,當發現某個容器服務無法正常啟動,可透過此方式偵錯。
scale
Compose指令中非常重要的功能,用於橫向擴展容器數量,當某個服務成為效能瓶頸時,可增加運行數量,並透過Docker Network內建的DNS名稱解析就可自動對應到新容器,雖然單一伺服器效益不大,但部署到Swarm叢集時就可突顯此功能的強大好處,文章後半段會用三層式架構示範此功能。
start
等同「docker start」,在前面使用create建立整個架構後,就必須使用start指令來啟動容器。
stop
等同「docker stop」,將已經啟動的服務容器停止運作。
top
等同「docker top」,列出已啟動的服務容器中所有程序,如圖5所示。
|
▲圖5 顯示Compose top結果。 |
unpause
等同「docker unpause」,將已暫停的服務容器解除,恢復成執行狀態。
up
等同「docker run」,是最常用的指令,若有服務容器未建置或未下載,則先build或pull,並create後,start定義檔中相關容器,若要以背景模式執行,還須加上「-d」,例如「docker-compose up -d」。
version
等同「docker version」,查看docker-compose執行檔的版本號碼。
以上就是所有Docker Compose指令的詳細說明,表1則列出所有指令的清單說明。
表1 Docker Compose指令說明
Compose進階範例:WordPress三層式架構
前面已介紹過WordPress與MySQL的兩層式架構,在此延伸增加一個Nginx Reverse Proxy服務,主要功能是擔任HTTP負載平衡角色,架構如圖6所示,其相關目錄結構如表2所示。
|
▲圖6 WordPress三層式架構。 |
表2 WordPress三層式架構目錄