iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
1
DevOps

現代化小白也要嘗試的容器手札系列 第 21

Day21. Docker Compose 嘗試一次搞定多容服務

  • 分享至 

  • xImage
  •  

鬆獅容器小白21連拍

https://ithelp.ithome.com.tw/upload/images/20201005/20025481ZFg5GjrUDh.jpg

Docker Compose 多容服務

Docker Compose是Docker官方自動化腳本編程(Orchestration)應用之一,主要任務就是能快速在集群中佈建分布應用。

之前篇章中有提到Dockerfile,它可以自訂義您想要讓執行中來的容器呈現出什麼樣的應用體現,但這最終的天花板就是讓用戶需要管理一個個獨立的映像容器。

這看似無傷大雅,但試想一下只管理個三五個可能沒什麼?十個開始有點辛苦,加上容器與容器間的服務任務關聯性就更讓人開始眼花撩亂,再者一個個來把容器啟動似乎太慢,所以把所需關聯容器的專案寫成一個docker-compose.yml ,最後透過Docker Compose協助一次啟動yml內描述的多個容器,讓效率更為高效。

所以就有了這樣一個好東西,Docker Compose,它是允許用戶在一個YAML模型範本中直接定義一組相關聯的應用容器,其實也可以當作是一組組專案任務的概念項目,舉例一個電商網站容器+後端資料庫容器內容描述腳本都在一個EC.YAML,無論是部署,管理更新等運帷作業,這都是最典型好理解的體現之一。

下圖是簡易的Docker Compose關聯
(LB+Web+DB)分別可以看成是三層式的前中後端架構,透過一個範本描述這三者各自的環境與它容之間的關係,直接根據描述自動化部署。
https://ithelp.ithome.com.tw/upload/images/20200927/20025481a6WDy6RPip.png

我們來體驗一下Docker Compose這樣的服務能帶給我們什麼樣的新感受
前置作業
參考前篇,必要安裝流程Day 8. Docker Engine on Ubuntu 18.04 安裝示範
https://ithelp.ithome.com.tw/upload/images/20200927/200254812PIuqSYpB1.png

docker-compose環境設置
github下載docker-compose二進位制檔案來安裝
下載最新版的docker-compose檔案

curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

新增可執行許可權

chmod +x /usr/local/bin/docker-compose

測試安裝結果

docker-compose --version

https://ithelp.ithome.com.tw/upload/images/20200927/200254814tkEiFh5yz.png

pip安裝(Python套件)

pip install docker-compose

安裝進行中...
https://ithelp.ithome.com.tw/upload/images/20200927/20025481OtqwLhBkAX.png
安裝程序完成
https://ithelp.ithome.com.tw/upload/images/20200927/20025481IfRAL0OjjN.png

docker-compose檔案結構範例
補充一下:請確認已安裝以下兩個條件:

  1. Docker Engine。
  2. Docker Compose。

一個簡單入門的docker-compose.yml檔案示範

version: '2'
services:
  db:
     image: mysql
     environment:
        MYSQL_ROOT_PASSWORD: 123456
  admin:
     image: adminer
     ports:
       - 8080:8080

上述yml內容主要目的是啟動兩個容器服務,一個是MySQL資料庫,另一個是MySQL的後台網頁管理服務。
MYSQL_ROOT_PASSWORD是用來管理者用來登入資料庫的密碼。

撰寫一個docker-compose.yml在自訂的路徑下,並確認切換此檔案路徑位置
https://ithelp.ithome.com.tw/upload/images/20200927/20025481XxKhBFoVho.png
確認剛剛建立更新的yml內容無誤
https://ithelp.ithome.com.tw/upload/images/20200927/20025481AnNwLLcTZ8.png

docker-compose up -d

執行所有在docker-compose.yml檔案裡設定Docker Image並執行容器,另外-d參數代表背景執行。
https://ithelp.ithome.com.tw/upload/images/20200927/200254810XS6nXbFog.png

出現的因為預設是透過Python 2版本來接應,故無法支援,所以以下做法就是強制使用Python 3的版本
Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in a future release.

python2 --version
python3 --version

https://ithelp.ithome.com.tw/upload/images/20200927/20025481dVmi6oiQfV.png

apt-get -q install python3-pip

強制使用python3進行中
https://ithelp.ithome.com.tw/upload/images/20200927/20025481IDlbVmmDRA.png
安裝完成
https://ithelp.ithome.com.tw/upload/images/20200927/20025481lyR5gHR6SQ.png

pip3 install --quiet docker-compose

https://ithelp.ithome.com.tw/upload/images/20200927/20025481jWP3EiPVuA.png

docker-compose up -d

https://ithelp.ithome.com.tw/upload/images/20200927/20025481Hk09UvLT9I.png

docker-compose ps

https://ithelp.ithome.com.tw/upload/images/20200927/20025481AdXDG1jdEw.png

Docker VM on Azure,因為我想要直接從外部透過Public IP連線,新增一筆Inbound Rule 8080
https://ithelp.ithome.com.tw/upload/images/20200927/2002548177lK05S5e3.png

DB後台管理登入狀態如下
登入IP:上圖網卡上綁定的公用IP
Account:root
Password:123456
https://ithelp.ithome.com.tw/upload/images/20200927/20025481B6zbJ86fsr.png

想要查看執行中的log可使用以下指令,會根據不同的模組服務分開檢視紀錄狀態

docker-compose logs

Admin_1
https://ithelp.ithome.com.tw/upload/images/20200927/20025481pMPa17VrAl.png
DB_1
https://ithelp.ithome.com.tw/upload/images/20200927/20025481gY7ChrllyB.png
最後附上停止 / 刪除執行的所有容器做為結尾,需要可以自行使用。

docker-compose stop
docker-compose rm

上一篇
Day20. Docker 進階網路深入探討(二)
下一篇
Day22. Docker 容器安全防堵對策
系列文
現代化小白也要嘗試的容器手札30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
暐翰
iT邦大師 1 級 ‧ 2020-10-04 02:06:55

本篇受益良多,感謝 Gary 大

Gary iT邦好手 1 級 ‧ 2020-10-04 07:00:44 檢舉

暐翰哥過獎了!!感謝捧場!/images/emoticon/emoticon37.gif

我要留言

立即登入留言