使用 Docker Compose 管理多個容器

weixin_34249678發表於2018-07-25

使用 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、定義了兩個服務,分別叫 mysqldbmywildfy
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

相關文章