Docker:實戰操作--Docker Compose
阿新 • • 發佈:2018-12-17
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檔案中定義的每個服務必須要指定image
或build
的引數.
引數解析
1.image
:映象的名稱,標籤或者部分ID
2.build
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(停止容器).