使用 Docker Compose 管理多個容器
- ** 學習Docker的過程中,會發現,當容器之間存在依賴關系的時候,會出現啟動先後順序的問題,還有多個容器同時啟動,需要打多條命了,顯得非常繁瑣。使用Docker Compose , 可以做到一鍵啟動多個容器。**
- ** Docker Compose 是一個用來定義和運作的複雜應用的Docker工具,使用Compose,你可以在一個檔案中,定義多容器應用,然後使用一條指令來啟動你的應用,完成一切準備工作。
-
**github.com/docker/compose
-
** 一個使用Docker容器的應用,通常由多個容器組成,使用Docker Compose , 不在需要使用 shell腳本來啟動容器,在配置檔案中,所有的容器通過 service 來定義,然後使用 docker-compose 腳本來啟動、停止和重新開機應用,和應用中的服務以及所有依賴服務的容器.**
完整的命了清單如下:
指令 | 說明 |
---|---|
build | 建構活重建服務 |
help | 指令幫助 |
kill | 殺掉容器 |
logs | 顯示容器的輸出内容 |
port | 列印綁定的開放端口 |
ps | 顯示容器 |
pull | 拉去服務鏡像 |
restart | 重新開機服務 |
rm | 删除停止的容器 |
run | 運作一個一次性指令 |
scale | 設定伺服器的容器數目 |
start | 開啟服務 |
stop | 停止服務 |
up | 建立并啟動容器 |
參考
https://docs.docker.com/compose/install/
。你能運作Compose在OSX和64位Linux上。目前不支援Windows作業系統。
** 安裝Docker Compose **
curl -L https://github.com/docker/compose/releases/download/1.4.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod 777 /usr/local/bin/docker-compose
** 配置檔案 **
1、Compose的配置檔案是
docker-compose.yml
。讓我們看看下面這個檔案:
mysqldb:
image:[classroom.example.com:5000/]mysql
environment:
MYSQL_DATABASE:sample
MYSQL_USER:mysql
MYSQL_ROOT_PASSWORD:supersecret
mywildfly:
image:[classroom.example.com:5000|arungupta]/wildfly-mysql-javaee7
links:
- mysqldb:db
ports:
- 8080
** 說明: **
a、定義了兩個服務,分别叫
mysqldb
和
mywildfy
b、使用
image
定義了每個伺服器的鏡像名
c、MySQL容器的環境變量定義在
environment
d、MySQL容器使用
links
和WildFly容器連結
e、使用
ports
使用端口轉發
** 啟動服務 **
1、如果你從網際網路運作,将
docker-compose-internet.yml
儲存為
docker-compose.yml
。
2、如果你使用教師給的鏡像,将
docker-compose-instructor.yml
docker-compose.yml
3、使用下面的指令,所有的服務将使用背景模式被動啟動
docker-compose up -d
** 顯示的輸出如下: **
Creating attendees_mysqldb_1... Creating attendees_mywildfly_1...
使用
-f
指定代替的compose檔案。
-p
指定代替compose檔案所在的目錄。
** 驗證服務是否啟動 **
docker-compose ps
輸出結果
這裡提供了一個整合的清單顯示所有啟動的服務和容器。
同時,通常使用
docker ps
指令驗證應用的容器,和在Docker主機運作的其他容器。
- 查詢伺服器日志。
- 驗證應用
-
擴充服務
你可以像這樣擴充服務:
docker-compose scale mywildfly=4
Creating and starting 2... done
Creating and starting 3... done
Creating and starting 4... done
檢查日志:
docker-compose logs
檢查運作的執行個體:
docker-compose ps
Name Command Start Ports