(これは 5/18 に書きました)
第50回 NSEG 勉強会に参加して、Docker について話してきました。
スライドに書いたとおり、Docker については触ってみた程度でそんなにちゃんとは理解してないです。
「詳しい人からのツッコミで教えてもらおうという企画です」と書いておいたら、早速ツッコミをもらいました。ありがとうございます!
@tmtms docker start コンテナハッシュID すれば 続きからいけるんじゃ?
— krakenbeal (@krakenbeal) April 19, 2014
スライドは修正済みです。
Docker は OSC 2014 で、さくらインターネットの社長の発表 http://www.slideshare.net/kunihirotanaka1/2014-31984470 で初めて知りました。
その後、手元で少し試した後、会社で自動テストに使ってみたりしてます。
- Dockerfile で centos イメージをベースとして、実行に必要なパッケージ等をインストールした状態のイメージを作成。
- そのイメージ上で動作するテストスクリプトを git リポジトリに登録。
gem install
してbundle exec rspec
するようなもの。 - Docker をインストールしてあるサーバーを Jenkins のスレーブノードにする。
- Jenkins 上に git リポジトリの更新をトリガーとして docker を動かすジョブを作成。
- docker 実行時は
-v $(pwd):/workspace
のような感じで、jenkins の workspace をホストと共有。そうしないとテスト結果が残らないので…。 - テスト成功時には docker rm でコンテナを削除。テスト失敗時には原因を追えるようにコンテナは残す。
常に同じ状態で起動するので、テストするには Docker はとてもいいと思います。手元の Linux デスクトップでちょっと動きを確認したい時も手軽に起動できますし。
自分はサービスの運用とかはやってないので、実運用環境でどれくらい使えるものなのかはわかりませんが…。