座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

Docker導入のパターン

最近は, Dockerのことを調べることが多いです. そうすると, 隙あらばどこかに導入して試してみたいという気持ちがでてくるのですが, 現実問題として, それが可能かどうかは調査が検証によるところです.

Docker導入が考えられるケースをいろいろ考えてみました.

本番環境をDockerコンテナで提供する

本番環境のデプロイをDockerコンテナで行う. これで飯を食うことを考えたら, かなり興味深い事例のひとつです. 実際にそういう事例は多くあるようですが, Webサービスの提供を生業としていない身としては, ちょっとわからないところ.

リソースの面倒をどう見るのかなど, 評価が必要なことがとても多くあり, 気軽に導入できなさそうです.

社内/チーム内向けのサービスに使う

社内やチーム内で使うRedmineやJenkinsなどのツールの導入に適用することは, 少し検証した所感として, 非常に易しいと感じました.

著名なツールの多くが, オフィシャルイメージとして提供されており, イメージの使用方法に関するドキュメントもそれなりに揃っています.

サーバの再起動時などにコンテナが提供するサービスをどうするかについては, コンテナ作成時に実行する docker-run コマンドに 再起動ポリシー を指定しておくといいようです. systemdでサービス管理している私の端末では, --restart=unless-stopped と指定しておくと, systemdが再起動したときに, dockerコンテナも自動で立ち上がります.

コンテナが立ち上がらなくなったときにどうするかなど, 可用性を担保する仕組み, ルール, ポリシーなどは, あらかじめ検証/評価し, 決めておく必要があると思います.

そういった課題はありますが, チーム内へのサービス提供が, 比較的, 導入実績を作りやすいのかなと思っています.

手前味噌ですが, Subversion+HTTP BASIC認証という, ゆるい社内向けのバージョン管理を実現するコンテナイメージを作ってみました.

kuchida1981/subversion-httpd

この件はまた後日書こうと思いますが, 使ってフィードバックいただけたら嬉しいです.

開発環境を提供する

開発環境をDockerコンテナ化する. これも本番環境へのデプロイのコンテナ化と同様に, もっともやってみたいところですが, じゅうぶんな検証/評価がなければ難しそうです.

一言で開発環境と言っても, ここに含まれるものは様々です.

このなかで, たとえばある程度は不変であるといえるもの, 実行環境/ランタイム/コンパイラなどはイメージ/コンテナに含めるべきでしょう.

Dockerに何を管理させるのか, どう運用するのかなど悩みは多くありますが, 見切り発車で導入するとクリティカルな問題が噴出しそうと思います.

公式ドキュメントには, Docker Compose を使った開発環境の構築例がいくつかあり (Docker Compose — Docker-docs-ja 1.12.RC ドキュメント), Django, Rails, Wordpressに適用するサンプルが載っています.

Docker Compose は複数のコンテナをまとめて管理する仕組みです. サンプルにもあるとおりで, Webアプリケーションへの適用はやりやすいと思います. PHP開発環境をDocker Compose を使って提供する仕組みをちょっと考えてみたので, これも後日まとめて載せようと思います.

検証/テスト環境として

もっとも導入しやすいのは, 検証/テストの環境としてDockerコンテナを使うことでしょう. 従来, 既存の環境の影響を回避するために仮想マシンを用意していたところを, Dockerに置き換えると, 単純に時間とリソースの節約になります.

オフィシャルイメージも多く揃っており, 検証対象のランタイム/コンパイラのバージョン指定もやりやすい.

個人レベルでも簡単に導入できて成果を得られるので, 最も手を付けやすいところと思います.

広告を非表示にする