天天看點

Docker 學習筆記3 - docker-compose(編排) 簡介0. 背景1. 介紹2. 參考

0. 背景

docker-compose 可将多個 “docker容器” 組成一組。這樣它們就可以在一個隔離的環境中一起運作。

1. 介紹

docker-compose: 可以用于定義一個組,友善于幫助運作多容器組的工具。它使用YAML檔案來配置應用程式的服務,然後就可以用一個指令,從配置中建立并啟動所有服務。

一般來說,把微服務 Docker 化後,在要想啟動微服務的容器時,不得不手動逐個啟動各個容器,服務多了以後,管理起來十分麻煩。用 docker-compose 來解決一些多容器管理的問題。

yaml 檔案

docker-compose 工具能直接用一個

docker-compose.yaml

來編排管理多個容器,可以設定各容器的

環境變量

,配置

service

配置項,就像

docker run

指令一樣來啟動容器。舉個例子:

以前用 docker 指令管理容器:

$ docker run -p 50052:50051 \
  -e MICRO_SERVER_ADDRESS=:50051 \
  -e MICRO_REGISTRY=mdns \
  vessel-service           

複制

等效于 docker-compose 來管理:

version: '3.1'
vessel-service:
  build: ./vessel-service
  ports:
    - 50052:50051
  environment:
    MICRO_ADRESS: ":50051"
    MICRO_REGISTRY: "mdns"           

複制

想加減和配置微服務,直接修改 docker-compose.yaml,十分友善。

使用 docker-compose 的步驟

使用 docker-compose 基本上是一個三步的過程:

  • (1)為各個子服務編寫Dockerfile
  • (2)編寫docker-compose檔案:在docker-compose中定義組成應用程式的服務。這樣它們就可以在一個隔離的環境中一起運作。
  • (3)運作docker-compose up和Compose started并運作整個應用程式。

内容說明

參考上面的示例,可以看到:

  • version 關鍵字:指定了 docker-compose 的版本是 3.1
  • services: 使用 services 來定義多個服務,每個微服務都定義了自己容器的名字
  • build 指定目錄下的 Dockerfile 将會用來編譯鏡像
  • 環境變量指定了容器的端口映射規則、環境變量等。

常用指令

編譯,執行建構

可使用 docker-compose build 來編譯生成三個對應的鏡像;

運作

使用 docker-compose run 來運作指定的容器

背景運作

docker-compose up -d 可在背景運作;

列出項目中所有的容器

docker-compose ps [options] [SERVICE...]

停止

使用 docker stop $(docker ps -aq ) 來停止所有正在運作的容器。

或者直接: docker-compose stop

** 停止和删除容器**

docker-compose down [options]

停止和删除容器、網絡、卷、鏡像。

2. 參考

https://docs.docker.com/compose/