首頁 > 軟體

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終端)


IT145.com E-mail:sddin#qq.com