docker compose

Docker compose

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的誕生就是爲了解決這個問題。架構

 

 

 

 Usage

      容器的構建,仍是使用dockerfile併發

      容器組合的定義使用新的配置文件 docker-compose.yml, 配置文件支持公共配置定義 和  定製配置覆蓋。app

Using Compose is basically a three-step process:分佈式

  1. Define your app’s environment with a Dockerfile so it can be reproduced anywhere.高併發

  2. Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment.

  3. 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.

 

Development environments

讓開發者使用一個命令就能夠啓動完整的應用,

docker-compose up

此階段不考慮後臺應用的複雜化架構和部署, 例如 高可用 高併發, 須要依賴 代理服務器 和 副本策略。

Automated testing environments

對於功能測試, 須要快速啓動測試環境下的應用, 而後運行測試腳本,和拆除測試環境。

使用docker-compose只須要三個命令:

$ docker-compose up -d
$ ./run_tests
$ docker-compose down

Single host deployments

在生產環境下,也能夠使用此工具,應對生產環境下的單機部署。

此功能應對簡單應用的部署, 不過大型應用, 會藉助 kubernetes mesos 作分佈式部署。

相關文章
相關標籤/搜索