繼上篇 Docker使用筆記 ,成功地在一台服務器上創建了docker 鏡像倉庫,然后在其它服務器 下載這個倉庫的鏡像,並試運行。這對於做多機子負載運維工作,已經是非常便利了,一旦我們在一台服務器上發布過服務之后,后面就不用在其它服務器上重復運維操作,只需2步即可:下載鏡像,運行鏡像。
但是新的問題來了,如果第一台機子布署的這個應用,是一個微服務架構,或者多應用分布式架構,站點加服務,一共有幾十個,那也是比較麻煩的事情。有沒有一種方式可以一次性配置,一鍵發布呢?當時是有的,我們可以手動寫批處理命令。不過還是要花費不少的時間和精力。Docker-compose可以非常便利地解決這個問題,只需要寫一份配置文件,然后執行即可。這要比自己寫批處理命令要來得高效。
下面是docker-compose的安裝,ubuntu系統安裝都是快: #apt install docker-compose 可以去點根煙了...
回來看看安裝情況, #docker-compose version
docker-compose version 1.8.0, build unknown
docker-py version: 1.9.0
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
發現版本有點低,不過也沒關系
下面是寫一份 docker-compose.yaml
我這份文件比較簡單,就是部署2個 web app
version: "2" services: app-1: image: 192.168.40.128:5000/dotnetimage:1.0 container_name: dotnetapp-container-1 expose: - "80" ports: - "8022:80" networks: - dotnetcore-network app-2: image: 192.168.40.128:5000/dotnetimage:1.0 container_name: dotnetapp-container-2 expose: - "80" ports: - "8023:80" networks: - dotnetcore-network networks: ##定義網絡組 dotnetcore-network: ## 網絡組名稱 driver: bridge ## 網絡的模式
版本號只能選2, 因為安裝的dock-compose版本有點低
2個容器都是用着同一個私有倉庫, 192.168.40.128:5000/dotnetimage:1.0
2個不同的對外端口,8022,8023
分別自定義了容器名:dotnetapp-container-1 dotnetapp-container-2
將這個文件放在第2台服務器,此時這台服務器需要安裝 docker和docker-compose
在此文件所在的文件下執行 #docker-compose build
app-2 uses an image, skipping
app-1 uses an image, skipping
說是跳過,不知何故。不知到底是build成功了沒有。
嘗試性地再執行 #docker-compose up
容器創建成功了

但這是前台模式,必須Ctrl+C才能做其它事,只能先卸下來 #docker-compose down
然后再 #docker-compose up -d 后台進程運行

試驗結果:

一步到位,發布了2個web app, 這就是容器編排 docker-compose 的魅力!
