Dockerコマンドをラッピングしてくれる「fugu」レビュー
公開日
更新日
Dockerコマンドを打つ場合には例えば次のように入力します。
docker run --detach --env="VERY=nice" --name="hello-world-nginx" --publish="8080:80" mattes/hello-world-nginx
ちょっと長くて設定をミスするとうまく動かなくて苦戦します。そこでDockerの起動設定をさらにラッピングして分かりやすくしてくれるツールがfuguです。
fuguの使い方
今回はさくらのクラウドで Ubuntu 14.04 LTS を使って試しています。
コマンドはバイナリが配布されていますので、パスの通ったディレクトにコピーするだけです。
curl -L https://github.com/mattes/fugu/releases/download/v1.1.1/fugu.v1.1.1.linux.x86_64.tar.gz | tar xvz mv fugu.v1.1.1.linux.x86_64 /usr/local/bin/fugu $ chmod +x /usr/local/bin/fugu $ fugu --version 1.1.1
まず設定ファイル(fugu.yml)を書きます。
$ cat fugu.yml image: mattes/hello-world-nginx # mandatory name: hello-world-nginx detach: true publish: - 8080:80
これを実行します。
$ sudo fugu run -e VERY=nice sudo: unable to resolve host ubuntu docker run --detach --env="VERY=nice" --name="hello-world-nginx" --publish="8080:80" mattes/hello-world-nginx Unable to find image 'mattes/hello-world-nginx' locally Pulling repository mattes/hello-world-nginx : 7513295db096: Download complete 65139809b1dbc597bf38d365a693c05ebcf2ef6f79c7739ea90f552f8e888a8e
これでnginxが起動しているDockerコンテナが起動しています。
$ docker ps sudo: unable to resolve host ubuntu CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 65139809b1db mattes/hello-world-nginx:latest nginx 42 seconds ago Up 41 seconds 0.0.0.0:8080->80/tcp hello-world-nginx
publishで指定した8080番ポートが80番に渡るようになっていたり、runを行う際に-eオプションで渡した内容が環境変数として送られるようになっています。
終了する場合は fugu destroy
を使います。
$ fugu destroy
終了させるコンテナの情報はfugu.ymlに入っていますので、特に名前を指定する必要もありません。とても簡単です。
その他のコマンドは次のようになっています。
$ fugu Usage: fugu COMMAND [LABEL] [arg...] Swiss Army knife for Docker. Commands: build Build an image from a Dockerfile run Run a command in a new container exec Run a command in a running container shell Open a shell in a running container destroy Kil a running container and remove it push Push an image or a repository to the registry pull Pull an image or a repository from the registry images List images (from remote registry) show-data Show aggregated data for label show-labels Show all labels help Show help Run 'fugu help COMMAND' for more information on a command.
run/build/exec/destroyなどが可能で、fugu.yml以外のファイルも指定できますので同じディレクトリに起動するDockerコンテナの設定をまとめて管理することもできます。なお、fuguはFigのようなオーケストレーションツールを目指している訳ではなく、起動や終了の設定をシンプルにしたいだけのようです。
Dockerを使うのに慣れてきたらfuguを使って設定をシンプルに管理できるようにしても良さそうです。コマンドラインですべて設定を指定するとミスが発生するかも知れないので、fuguでラッピングすると運用が楽になるでしょう。