Docker學習筆記七 使用Fig編配Docker

編配(orchestration)是一個沒有嚴格定義的概念。大概描述了自動配置、協做和管理服務的過程。在Docker世界裏,編配用來描述一組實踐過程,這個過程會管理運行在多個Docker容器裏的應用,而這些Docker容器有可能運行在多個宿主機上。python

這裏記錄使用Fig進行簡單的容器編配。Fig是由Orchard團隊開發的Python開源工具,2014年被Docker公司收購。linux

使用Fig,能夠用一個YAML文件定義一組要啓動的容器,以及容器運行的屬性。Fig稱這些容器爲服務。git

一、Linux上安裝Figgithub

sudo bash -c "curl -L https://github.com/docker/fig/release/download/0.5.2/linux > /usr/local/bin/fig
chmod +x /usr/local/bin/fig

查看fig是否安裝成功:web

fig --version

二、示例應用redis

演示Fig的例子使用了兩個容器:docker

  • 應用容器,運行Python示例程序;
  • Redis容器,運行Redis數據庫。

構建應用容器:數據庫

mkdir figapp
cd figapp
touch Dockerfile

下載做者編輯好的app.py文件和requirements.txt文件(該文件保存應用程序的依賴關係)到figapp目錄。flask

FROM python:2.7
MAINTAINER James Turnbull <james@example.com>
ENV REFRESHED_AT 2014-08-01

ADD . /figapp

WORKDIR /figapp

RUN pip install -r requirements.txt

這個Dockerfile基於python:2.7鏡像構建。首先添加app.py和requirements.txt到鏡像中的/figapp目錄。以後將工做目錄設置爲/figapp,並執行pip命令來安裝應用的依賴:flask和redis。bash

構建鏡像

docker build -t "ivan/figapp" .

三、編寫fig.yml文件

使用Fig,能夠(以Docker容器的形式)定義一組服務,並啓動這些服務。Fig還能夠指定這些服務運行時的屬性,它們和docker run命令須要的參數相似。將全部與服務有關的屬性都定義在一個YAML文件裏,以後執行fig up命令,Fig就會啓動這些容器使用指定的參數來執行,並將全部的日誌輸出合併到一塊兒。

cd figapp
touch fig.yml
web:
  image: jamtur01/figapp
  command: python app.py
  ports:
   - "5000:5000"
  volumes:
   - .:/figapp
  links:
   - redis
redis:
  image: redis

fig.yml文件定義了兩個服務:web和redis。image指定了要運行的鏡像,也能夠使用build命令並提供一個Dockerfile讓Fig構建一個鏡像:

web:
  build: /home/james/figapp

使用command指定服務啓動時要執行的命令。使用ports和volumes指定了服務要映射到的端口和卷。使用links指定服務要鏈接的其餘服務。

四、運行Fig

在fig.yml文件所在的目錄執行fig up命令運行服務。也能夠加入-d參數使其在後臺運行。

五、使用Fig

fig ps 命令列出本地fig.yml文件裏定義的正在運行的全部服務。

fig logs命令查看服務的日誌時間。

fig stop命令能夠中止正在運行的服務。

fig rm刪除服務。

《第一本Docker書》中關於Consul的介紹由於沒有測試環境略過。

相關文章
相關標籤/搜索