Dockerについて

 今年はぼちぼちDockerを触っていたので、自分なりにDockerについてまとめておく。

 個人的にDockerでありがたいのは、Dockerfileを記述すれば環境構築をしてくれるところだ。データベース入れて初期設定してとか、アプリに必要なライブラリを入れて…そもそも下手したら言語からインストールしてとかを、環境ごとにやるのはすごくめんどい。実行環境をコンテナにしてしまえるなら、その手間はほとんどないものになる。

 Dockerのメリットでありデメリットでもあるのはイミュータブルな環境になるというところだろう。イミュータブルというのは、Dockerfileに記述した環境をゴリゴリ使い捨てにできるということ。
 Dockerの個人的なうまいと思う使い方はCIサービスのTravisCI、あるいは転職支援サービスのpaizaである。ざっくり言えば両方ともクライアントとなるユーザにアプリの実行環境をサービス上で提供している。それをOS部分からやってたらサーバのリソースが膨大になる。それをコンテナで提供することでリソースサイズを落としているんだろう。
 DockerでWebアプリのサーバを立てたとして、ありがたくないのはデプロイするたびに環境に入ったログがリセットされることだろう。ここらは仕組みを考えると仕方なくて、重要なものはどうにか外部に出す仕組みを入れておく必要があるだろう。

 ぼくの今のところの使い方として、Webアプリのテスト用データベース、SQLインジェクションの教育用環境を主なところとしている。ほかにWebアプリそのものをコンテナに積んで、さくらのサービスであるArukasにのせてたりもする。さくらのArukasはデプロイの出力確認が不便であったり、まだよく503をレスポンスで返してくるので良い環境とは言い難い。でもDocker自体は便利なところがありおもしろいものだと感じている。
 とりあえず使い捨てしたくない仮想環境はVirtualBoxやHyper-V、使い捨てでガリガリやっていく環境はDockerでというふうにやっていく。
comment: 0