https://docs.docker.com/compose/web
Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.redis
docker命令只能構建和運行一個容器。docker
可是容器通常只建議運行一個服務,通常應用後臺依賴若干個服務,例如數據庫、web服務器。數據庫
一塊兒維護同一個應用的若干容器,就成爲一件麻煩的事情。服務器
docker compose的誕生就是爲了解決這個問題。架構
容器的構建,仍是使用dockerfile併發
容器組合的定義使用新的配置文件 docker-compose.yml, 配置文件支持公共配置定義 和 定製配置覆蓋。app
Using Compose is basically a three-step process:分佈式
Define your app’s environment with a
Dockerfile
so it can be reproduced anywhere.高併發Define the services that make up your app in
docker-compose.yml
so they can be run together in an isolated environment.Run
docker-compose up
and Compose starts and runs your entire app.A
docker-compose.yml
looks like this:version: '3' services: web: build: . ports: - "5000:5000" volumes: - .:/code - logvolume01:/var/log links: - redis redis: image: redis volumes: logvolume01: {}For more information about the Compose file, see the Compose file reference.
Compose has commands for managing the whole lifecycle of your application:
- Start, stop, and rebuild services
- View the status of running services
- Stream the log output of running services
- Run a one-off command on a service
The features of Compose that make it effective are:
1) 多個獨立環境在單機上運行。
--- 我理解應該是 docker的功能。
2)當容器被建立時候保留數據。
--- 我理解應該是 docker的功能。
3)只從新建立改變的容器,即dockerfile有改變,才從新構建新的容器。
--- 這是docker compose的新功能。
4)變量支持 + 在不一樣的環境中移動組合。
Compose supports variables in the Compose file. You can use these variables to customize your composition for different environments, or different users. See Variable substitution for more details.
---- docker-compse.yml 配置文件能夠感知系統的環境變量, 和此工具本身定義的變量(在.env文件中), 以及在此配種本身定義變量。
這就促使其擁有跨環境的感知能力, 應對生產環境、測試環境、開發環境的改變。
爲何須要這個功能, 我理解不一樣環境下,軟件定義的行爲是略有差別, 例如開發環境下, 全部打印全開, 生產環境下值開啓 critical級別打印。
Compose works in all environments: production, staging, development, testing, as well as CI workflows. You can learn more about each case in Common Use Cases.
讓開發者使用一個命令就能夠啓動完整的應用,
docker-compose up
此階段不考慮後臺應用的複雜化架構和部署, 例如 高可用 高併發, 須要依賴 代理服務器 和 副本策略。
對於功能測試, 須要快速啓動測試環境下的應用, 而後運行測試腳本,和拆除測試環境。
使用docker-compose只須要三個命令:
$ docker-compose up -d $ ./run_tests $ docker-compose down
在生產環境下,也能夠使用此工具,應對生產環境下的單機部署。
此功能應對簡單應用的部署, 不過大型應用, 會藉助 kubernetes mesos 作分佈式部署。