docker-compose概述--翻譯
Overview of Docker Compose 譯文
Docker Compose 是一個用來定義和執行多Docker容器程式的工具,如果使用Compose,你將可以使用一個YAML
檔案來配置你的應用的服務。然後,你可以使用一個單一的命令來讀取配置,並建立和啟動所有的服務。在學習所有關於Compose的特性之前,你可以看一下 特性列表
Compose 可以在所有的環境中執行,例如: 生產,staging,開發,測試 ,就像CI工作流一樣。你可以在一些公共例子中學習到更多用法。
使用Compose一般都是如下三個步驟:
-
通過Dockerfile定義你的應用的環境,以至於你可以在任何地方複製它
-
在
docker-compose.yml
中定義所有組成你的應用的服務,以至於他們可以在一個隔離的環境中一起執行 -
執行
docker-compose up
然後compose 會執行並啟動你的整個應用
一個docker-compose.yml
長得像下面這樣:
version: '3' services: web: build: . ports: - "5000:5000" volumes: - .:/code - logvolume01:/var/log links: - redis redis: image: redis volumes: logvolume01: {}
更多的 Compose file 的資訊,可以查詢 compose文件
Compose 擁有很多管理你的應用的整個生命週期的命令
- 啟動、停止 和 重新構建服務
- 觀察正在執行的服務的狀態
- 流化正在執行的程式輸出的日誌
- 在服務中執行一個一次性的命令
Compose 文件
- [安裝 Compose]
- [Compose入門]
- [使用Django入門]
特性
一下這些Compose的特性將非常有用
- 一臺宿主機上多環境隔離
- 儲存資料卷資料,當一個容器啟動時
- 僅當容器發生改變時重新建立
- 在不同的環境中定義變數和組合
一臺宿主機上多環境隔離
Compose 使用專案名來隔離不同的環境。你可以在不同的上下文中使用這個專案名稱,比如:
- 在一臺開發宿主機上,建立多個單獨環境的拷貝,比如你想為專案的每個特性分支執行一個穩定的拷貝環境
- 在一臺 CI 伺服器上,為了防止相互之間的干擾,可以將專案名命為一個唯一的構建數字
- 在一個共享宿主機或開發機上,要去阻止哪些擁有相同的服務名字的專案之間的相互干擾
預設的專案嗎時專案的目錄的名字,你可以使用-p
來自定義一個專案名,或者使用COMPOSE_PROJECT_NAME
來定義一個環境變數
當容器建立時,儲存資料卷資料
Compose 儲存所有你服務用到的資料卷。當執行docker-compose up
時,如果Compose發現之前有可用的容器執行時,會從舊的重啟中拷貝起資料捲到新容器中,這個過程時為了確保資料卷中的資料不會丟失。
如果你在windows上使用docker-compose
,你需要為了你這個特殊的需求而不得不新增一些環境變數,具體請看這裡
只會在容器發生改變時重建容器
Compose 快取了用於建立容器的配置。當你重啟服務時,如果服務本身沒有改變,Compose將複用之間已存在的容器,複用容器意味著你可以快速的改變你的環境
在不同的環境中定義變數和組合
Compose 支援的 Compose file
中定義變數。你可以用這些變數來為不同的環境或不同的使用者做定製。具體請看變數替換
你可以通過extends
欄位或者建立多個Compose file
的方式擴充套件一個Compose file
。詳情請看extends
通用案例
Compose有很多使用方法。下面概述了一些通用的案例:
開發環境
當你想開發一個軟體,讓程式執行在一個隔離的環境中的能力和能預期互動的能力至關重要。Compose的命令列工具就擁有上述能力
Compose file
提供了一種可以歸檔和配置應用服務的所有依賴(比如: 資料庫、佇列、快取、web serivice API等)的方式。使用Compose的命令列工具,你可以靜靜用一個單獨的命令(docker-compose up)就可以為依賴建立並執行一個或多個容器。
這些特性組合在一起就為開發者提供一個非常便利的方式去啟動過一個專案。Compose 可以將一個多頁的"開發者如門指引"簡化為一個機器可讀的Compose file
檔案和幾個簡單的命令。
自動化測試環境
每一一個持續整合或持續部署程式的重要組成部分是自動化測試套件。自動化端到端測試需要一個可以執行這些用例的環境。Compose就提供了一種便利的方式去建立或銷燬(為執行你的測試用例的)隔離的測試環境。只要通過Compose file定義好整個環境,就可以可以通過幾個簡單的命令來建立或銷燬這些環境
docker-compose up -d
./runt_tests
docker-compose down
單宿主機部署
Compose 很傳統地一直聚焦於開發和測試工作流,但是隨著每個版本的發展,我們會提供更多的生產導向的特性。你可以使用Compose來部署到一個遠端的Docker引擎。這個Docker引起可能是個由Docker Machine (已淘汰)來控制的單例項,也可能是一整個 Docker Swarm(已淘汰) 叢集
發行說明
想檢視過去到現在的Docker Compose 的發行版本的更改的詳細列表,清檢視更改日誌
獲取幫助
Docker Compose 正在積極發展中。如果你去幫助,比如想做貢獻,或者僅僅是想與一些志同道合的人來探討這個專案,我們有開放一些渠道來用來交流。
- 上報bug或特性請求:使用 issue tracker on Github
- 實時與這個專案的人討論: 在freenode IRC 上參加docker compose 頻道
- 貢獻程式碼或文件的更改:在github上提交一個pull request
更多資訊和資源,清瀏覽 幫助