2021-05-12 14:32:11
Docker應用 - 使用Docker Compose編排容器
2020-06-16 16:12:13
什麼是docker compose?
?先前我們在使用Dockerfile構建映象時,在編寫好Dockerfile檔案以及其他必要檔案後,需要使用docker build 、docker run 等命令操作{建立,啟動,停止等}容器。然而,在微服務架構體系中,一個應用系統一般包含若干個伺服器,每個微服務通常都會部署多個範例,如果每個服務都要手動啟停,那麼這樣效率太低了,而且維護也非常不方便。
?因此,便有了docker compose,它可以輕鬆、高效地管理容器,是一個用於定義和執行多容器docker的應用程式工具。
下面結合實際例子來使用以下docker compose工具吧,之後會給出編排檔案常用的欄位介紹以及docker-compose的相關命令介紹。
基於docker compose工具構建nginx容器服務
首先,我們需要建立一個目錄,其中需要包含一個構建Dockerfile的nginx目錄,首頁頁面測試目錄以及docker-compose.yml檔案
所以,一方面我們需要docker安裝環境,也需要安裝docker compose工具;
再者,依舊是需要編寫nginx服務的Dockerfile和執行指令碼,結合指定的頁面目錄來進行測試驗證;
接下來,編寫yml格式的docker-compose.yml檔案,並且執行對應的命令。
下面是這個案例的目錄結構
[root@localhost opt]# tree compose_nginx/
compose_nginx/
├── docker-compose.yml
├── nginx
│?? ├── Dockerfile
│?? └── nginx.sh
└── wwwroot
└── index.html
2 directories, 4 files
Dockerfile以及對應的檔案都無需更改,我們需要做的就是編寫一個首頁頁面
[root@localhost opt]# cat compose_nginx/wwwroot/index.html
<h1>this is test web</h1>
接著編寫docke-compose.yml檔案
[root@localhost opt]# cat compose_nginx/docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 1216:80
- 1217:443
networks:
- cluster
volumes:
- ./wwwroot:/usr/local/nginx/html
networks:
cluster:
docker-compose.yml檔案解釋
version:宣告版本,目前是3
service:具體的服務
nginx:服務名稱
hostname:容器主機名稱
build:建立
context:提供資源和素材提供的目錄,用來建立容器的路徑
dockerfile:Dockerfile檔案
ports:提供的埠,相當於執行docker run -p的設定
networks:網路名稱,如果是群集那麼這個名稱設定需要一致(同一個網路環境)
volumes:資料卷,本次案例是提供首頁頁面
networks:services的子選項針對外公開的網路名稱
啟動執行
[root@localhost opt]# docker-compose -f compose_nginx/docker-compose.yml up -d
#-f——指定檔案 -d——後台 up——啟動
....//第一次執行過程比較久,顯示資訊多,這裡就省略了。
執行的結果和一些解釋如下圖
如果重複執行上述命令則會出現以下結果,因此這個WARNING是一個比較友好的提示哦!
[root@localhost opt]# docker-compose -f compose_nginx/docker-compose.yml up -d
compose_nginx_nginx_1 is up-to-date
檢視映象和容器
[root@localhost opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
compose_nginx_nginx latest 67f9a64cc32d 5 minutes ago 587MB
CentOS 7 5e35e350aded 5 months ago 203MB
[root@localhost opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8f3d48d7c765 compose_nginx_nginx "/nginx.sh" 5 minutes ago Up 5 minutes 0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp compose_nginx_nginx_1
測試驗證:
Docker compose設定常用欄位(.yml檔案中)
Docker compose常用命令(bash終端)
相關文章