1. 程式人生 > >Docker:實戰操作--Docker Compose

Docker:實戰操作--Docker Compose


DockerCompose是用來定義以及執行多容器應用的工具.
Docker官方推薦使用DockerCompose來構建開發環境的服務,不推薦在生產環境當中使用.
當前微服務架構盛行,我們不可能為每個依賴的服務搭建一套環境,建立容器以及映象.當我們迫切的需要一個工具解決我們開發環境的複雜性,達到一鍵執行的目的,因此DockerCompose就出現了.
本文是接著上篇文章的例子進行操作,請最好閱讀完Docker:實戰操作–安裝與基礎操作來保證你對本章的理解.

Docker Compose 安裝

直接通過下載安裝:

sudo -i #獲取sudo許可權防止curl命令寫入許可權不足
curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose

Docker Compose 重要配置引數解析

docker-compose.yml檔案是用來構建服務的配置檔案.
docker-compose.yml檔案中定義的每個服務必須要指定imagebuild的引數.

引數解析

1.image:映象的名稱,標籤或者部分ID
2.build

:包含一個Dockerfile構建的目錄.
3.command:重寫執行命令.
4.links:連結服務中的容器到另一個容器
5.external_links:連結外部容器(不在該docker-compose.yml配置內或不是Compose啟動的容器)
6.extra_hosts:IP域名對映
7.ports:埠對映到主機
8.volumes:掛載點對映
9.volumes_from:卷積對映從另一個容器或服務的對映,形式與上一邊所講的一致
10.environment:定義一些系統環境變數
11.extends:主要是用於依賴檔案關係的繼承
common.yml:

webapp:
  build: ./webapp
  environment:
    - DEBUG=false
    - SEND_EMAILS=false

development.yml

web:
  #指明需要繼承
  extends:
  	#檔案所在路徑
    file: common.yml
	#服務名稱
    service: webapp	
  ports:
    - "8000:8000"
  links:
    - db
  #覆蓋重寫 
  environment:
    - DEBUG=true
db:
  image: postgre

12.net:指定網路連線規則
13.labels:使用字典或者陣列定義源資料,可以陣列也可以字典,防止標籤衝突,推薦使用域名反寫加上key

labels:
  - "com.example.description=Accounting webapp"

#或者

labels:
  com.example.description: "Accounting webapp"

Docker Compose執行

定義DockerCompse配置檔案

接著上篇文章的例子,定義如下檔案.

#定義web服務
web:
	#定義構建的目錄,該目錄下有Dockerfile,app.py,requirements三個檔案
    build: ~/pt
	#定義埠對映
    ports:
    - "5000:80"
    #將當前的目錄掛載到容器當中,方便程式碼修改後直接訪問容器觀察效果
    volumes:
    - .:/code
    links:
    - redis
#定義redis服務  
redis:
	#從映象拉取redis服務
    image: redis

自動構建以及執行

執行如下命令會自動構建定義的服務:拉取redis映象以及根據build目錄讀Dockerfile定義的規則構建服務.
-d引數標明需要檢測是否自動建立,如果已經建立不會再建立.

sudo docker-compose -d up 

其它操作

當操作Compose運行了服務後,我們可以進行擴容:

sudo docker-compose scale web=2

上述例子我們將web擴容為2個.

有時候我們需要執行Compose配置檔案當中單獨的一個服務.
例如我們單獨執行web服務不執行redis服務.

sudo docker-compose run --no-deps web

除此之外還有一些常用的操作,ps(列出容器),restart,kill,build(只構建),up(建立並執行),rm(刪除停止的容器),kill(停止容器).