6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自分専用メモ:Docker 複数コンテナ管理の悩み

Last updated at Posted at 2015-07-22

自分専用メモ。

複数コンテナ管理における自分勝手な要件

  1. 複数コンテナのビルド、デプロイ、依存関係、起動、停止をまとめて管理・制御したい
  2. 公式イメージとプライベートレジストリを併用したい
  3. ビルド/起動/停止前後などのイベントでスクリプトを流したい
  4. いっぺんにいろんなことをやらない(自動化しすぎない)
  5. Docker ホストには役割を振り、それに応じた分岐をしたい(本番、テスト、開発など)
  6. 大規模なオーケストレーションとかいらないので、まずは小規模で

現状の複数コンテナ管理ツール

docker-compose

イメージの push ができない。基本、デプロイ専用という印象。細かいことをさせてくれない。きわめて発展途上。

maestro-NG

イメージの push ができず docker-compose と同じような立ち位置だが、細かいことは結構できるかも。テスト環境をさくっと立ち上げたいと言った用途に。

crane

なかなか良いのだが、ビルド前後のイベントはない。また、設定ファイル中で Dockerfile を指定してしまうと、crane lift する時に必ずビルドが走る仕様となっている。作者は「ビルドは分離したほうが良い気がしてきた」と言っており、V2 あたりで導入される見込み。環境依存スクリプトの概念もない。期待したいが。。。

ないものはないので、理想ツールを夢想する

仮に、ツールの名前を dcon とする。

  1. Docker ホストの役割設定("prod" とか "test" とか任意文字列): $ dcon set [-g] host-role="HOST-ROLE"
  2. カレントタグの設定(ビルド/push/pull のターゲットになる): $ dcon set [-g] current-tag="TAG-NAME"
  3. 各種設定値確認: $ dcon set
  4. イメージのビルド: $ dcon b[uild]
  5. イメージの push: $ dcon push
  6. イメージのビルド & push: $ dcon pub[lish]
  7. イメージの pull: $ dcon pull
  8. コンテナの起動: $ dcon start
  9. イメージの pull & 起動(イメージがなければエラー終了): $ dcon up
  10. コンテナの停止: $ dcon stop
  11. コンテナの削除: $ dcon rm
  12. イメージの削除: $ dcon rmi
  13. ステータス確認: $ dcon stat

オプション類:

  • -g: グローバル設定(Daemon labels でも良いが、これなら再起動不要ですぐに切り替え可能)
  • -f: 強制
  • -d: デバッグ出力
  • -v: バージョン表示
  • -h: 使い方表示

dcon.yaml に設定を書く。ひとまず crane.yaml と同じで良い気がする。

docn.yaml
containers:
    apache:
        image: some-apache-image:latest
        run:
            volumes-from: ["app"]
            publish: ["80:80"]
            link: ["mysql:db", "memcached:cache"]
            detach: true
    app:
        dockerfile: app
        image: michaelsauter/app
        run:
            volume: ["app/www:/srv/www:rw"]
            detach: true
    mysql:
        image: mysql
        run:
            env: ["MYSQL_ROOT_PASSWORD=mysecretpassword"]
            detach: true
    memcached:
        image: tutum/memcached
        run:
            detach: true  
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?