DockerオーケストレーションツールFigを試す
DockerのオーケストレーションツールであるFigを試してみます。
Fig開発開発元であるOrchard社は2名のみからなる企業で、Docker社による買収が発表されています。
ちなみにFigはイチジクという意味を持った英単語だそうな。確かにFigサイトにはイチジクの画像が載っています。
(何故にイチジク?)
今回はFigサイトに掲載されているQuick startの手順に沿って、Figを体験してみます。
環境
Figを試すにあたって今回使用した環境は次のとおりです。
Dockerインストール
まず、Figに先立ってDockerをインストールします。
DockerサイトのUbuntu向けインストール方法 Ubuntu - Docker Documentation を参考に実施します。
なお、最新版のDockerをインストールします。
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 $ sudo sh -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" $ sudo apt-get update $ sudo apt-get install lxc-docker
バージョン確認
$ sudo docker version Client version: 1.1.2 Client API version: 1.13 Go version (client): go1.2.1 Git commit (client): d84a070 Server version: 1.1.2 Server API version: 1.13 Go version (server): go1.2.1 Git commit (server): d84a070
Figインストール
次に、Figをインストールします。
Figサイトのインストール方法 Installing Fig "On 64-bit Linux"を参考に実施します。
$ wget -O fig https://github.com/docker/fig/releases/download/0.5.2/linux $ sudo mv fig /usr/bin/ $ sudo chmod +x /usr/bin/fig
バージョン確認
$ fig --version fig 0.5.2
試す
ではQuick startを実践してゆきます。
プロジェクトフォルダ作成
Figプロジェクトのフォルダを作成します。
$ mkdir figtest $ cd figtest
Webアプリの作成
PythonによるWebアプリを作成します。フレームワークFlaskおよびRedisを用いるようです。
from flask import Flask from redis import Redis import os app = Flask(__name__) redis = Redis(host="redis_1", port=6379) @app.route('/') def hello(): redis.incr('hits') return 'Hello World! I have seen %s times.' % redis.get('hits') if __name__ == "__main__": app.run(host="0.0.0.0", debug=True)
Dockerfileの作成
Webアプリの動作コンテナとするイメージ作成用にDockerfileを作成します。
FROM python:2.7 ADD . /code WORKDIR /code RUN pip install -r requirements.txt
fig.ymlの作成
Figの肝であるサービス定義fig.ymlを作成します。
このファイルにおいて、各Dockerコンテナのオーケストレーションを定義するわけですね。
web: build: . command: python app.py ports: - "5000:5000" volumes: - .:/code links: - redis redis: image: redis:latest
以上でファイルの作成は完了です。
ファイル構成は次のようになります。
figtest ├ Dockerfile ├ app.py ├ fig.yml └ requirements.txt
サービスの起動
コマンド fig up を実行します。
これによってDockerイメージのpullやイメージのビルド、各コンテナの起動が行われます。
$ sudo fig up Creating figtest_redis_1... Pulling image redis:latest... 5cd5c0d9ebfc: Pulling dependent layers (中略) Creating figtest_web_1... Building web... 1c8df2f0c10b: Pulling dependent layers (中略) Attaching to figtest_redis_1, figtest_web_1 web_1 | * Running on http://0.0.0.0:5000/ web_1 | * Restarting with reloader
どうやら起動した模様。
確認
まずコンテナを一覧表示するコマンドfig psで様子を見てみます。
$ sudo fig ps Name Command State Ports -------------------------------------------------------- figtest_redis_1 redis-server Up 6379/tcp figtest_web_1 python app.py Up 5000->5000/tcp
起動および動作してますね。
Webブラウザーから見てみます。
初回
2回目以降
お、動いてる。
動作確認が終わったのでコンテナを停止します。fig stopコマンドを実行します。
$ sudo fig stop Stopping figtest_web_1... Stopping figtest_redis_1... $ sudo fig ps Name Command State Ports ------------------------------------------------ figtest_redis_1 redis-server Exit 0 figtest_web_1 python app.py Exit 0
止まりました。
以上、Fig体験記でした。