iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
DevOps

Docker獸 究極進化 ~~ Kubernetes獸系列 第 11

Day-11 初出 Docker-Compose

前言

恭喜大家完成了Docker的學習課程,這章節將會開始探討Docker-Compose,並在後面章節會逐步地把先前 Day-10 撰寫 Docker專用的Script 所寫的Script給轉換成Docker-Compose,敬請期待。

至於尚未讀過前面文章與對Docker還沒有一定掌握度的讀者,務必先到 Day-1 進化的開始,初探Container ,並消化Container與Docke的相關技術背景後,再來學習Docker-compose會較好理解。

What is docker-compose?

docker-compose是一種用來規劃以及管理多容器開發的工具,透過docker-compose所需要的yaml檔來進行服務的設定,接著利用compose的指令即可啟動我們所需的所有Containers並設定好其服務,除此之外,也可用compose來區分不同environments(dev, test, uat, stg, prd),得以配合團隊的軟體開發流程。

https://ithelp.ithome.com.tw/upload/images/20200926/20129737auLB4JOE7I.png

Install docker-compose

1. Linux

  • Download related packages and install
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • Apply executable permissions to the binary:
$ sudo chmod +x /usr/local/bin/docker-compose

Tips: Note: If the command docker-compose fails after installation, check your path. You can also create a symbolic link to /usr/bin or any other directory in your path.

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  • Test docker-compose
$ docker-compose --version
docker-compose version 1.27.1, build 1110ad01

2. Mac

  • Install docker-desktop on the machine.

https://docs.docker.com/docker-for-mac/install/

3. Windows

  • Install docker-desktop on the machine

https://docs.docker.com/docker-for-windows/install/

Try the docker-compose commands

在這章節同樣會透過個人經驗,給定好用程度。

Sample yaml file

version: '3'
services:
  redis:
    image: redis:3.0
    ports:
      - "6379:6379"

Create the docker-compose(★☆☆)

docker-compose create -f

docker-compose透過指定yaml檔,創建所有相關的容器

$ docker-compose create -f docker-compose.yaml

Start the docker-compose(★☆☆)

docker-compose start -f

docker-compose透過指定yaml檔,啟動相關容器

$ docker-compose start -f docker-compose.yaml

Run the docker-compose(create+start)(★★★)

docker-compose up -f

docker-compose透過指定yaml檔,創建並啟動相關的容器

$ docker-compose up -f docker-compose.yaml

另外也可以帶入像是 —build之類的arguments,再啟動docker-compose前,重新build過image。

其他arguments請利用docker-compose up —help取得資訊。

Stop the docker-compose(★☆☆)

docker-compose stop -f

docker-compose透過指定yaml檔,關閉所有相關的容器

$ docker-compose stop -f docker-compose.yaml

Remove the docker-compose(★☆☆)

docker-compose rm -f

docker-compose透過指定yaml檔,移除相關容器

$ docker-compose rm -f docker-compose.yaml

Stop and Remove the docker-compose (stop + rm)(★★★)

docker-compose down -f

docker-compose在關閉時必須指定yaml檔,若不指定的話則預設為本地的docker-compose.yaml。

$ docker-compose down -f docker-compose.yaml

另外也可以帶入像是 —build之類的arguments,再關閉docker-compose時,同時移除相關的volumes。其他arguments請利用docker-compose down —help取得資訊。

Get the logs of docker-compose (★★★)

docker-compose logs -f docker-compose.yaml

docker-compose在運行時,透過指定yaml檔,取得該docker-compose相關containers在前台運行的log,常常會配備tail以及f做使用

$ docker-compose logs --tail=10 -f

以上指令做的是在持續地觀看docker-compose的logs並讀最後的十行

Restart the docker-compose(★★☆)

docker-compose restart -f docker-compose.yaml

透過指令將所有的服務關閉並重啟,請注意只是重啟,並沒有刪除並重新創建容器。

$ docker-compose restart 

Pause/unpause the docker-compose(★☆☆)

docker-compose pause/unpause -f docker-compose.yaml

透過指令將所有的服務暫停/取消暫停

Display running containers(★★☆)

docker-compose top -f docker-compose.yaml

透過指令將指定yaml檔的服務顯示出來。

後記

在這章節當中我們知道了docker-compose的初衷、安裝了docker-compose,並熟悉了docker-compose的相關指令,那再下一章節當中,我們會開始著手將之前的docker script改裝成docker-compose的yaml檔,敬請期待。

https://ithelp.ithome.com.tw/upload/images/20200926/20129737EV4TFue8Sb.png

Docker獸進化~~ Docker-Compose 獸

Reference

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


上一篇
Day-10 撰寫 Docker專用的Script
下一篇
Day-12 煉成 Docker-Compose YAML
系列文
Docker獸 究極進化 ~~ Kubernetes獸30

尚未有邦友留言

立即登入留言