天天看點

使用 Docker Compose 管理多個容器

使用 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