やる気がストロングZERO

やる気のストロングスタイル

Dockerを使うと何がいいのか?悪いのか?

しばらくDockerで遊んでみて実感したDockerを使うメリットをまとめてみる。

環境を汚さない

開発マシンにいろいろミドルウェアを入れていくと、把握していない依存ライブラリがいろいろインストールされていって精神衛生上よくない。依存ライブラリ周りで問題を起こして「新規ミドルウェアのインストールが出来ない」のような問題が発生する場合がある。 ミドルウェアをDockerコンテナ上にインストールして使うようにすることで、開発マシン環境を綺麗なまま保つことができる。

バージョン違いのミドルウェアの同居で悩まない

平行開発などをしていて、それぞれ異なるバージョンのミドルウェアを要求しているとき、同居インストールできずに困る場合がある。 それぞれ別のDockerコンテナにインストールして使うことで対応できる。

そのままいろんな環境に持っていける(ポータビリティ)

テスト環境で動くようになったので、本番環境にデプロイしたら動かなくて困る場合がある。 「必要なライブラリを本番環境にインストールするのを忘れていた」といった事が原因で起こる。 Dockerコンテナで構築されている場合、ライブラリやミドルウェアも含めた実行環境をまるごと持っていくことができるので、Dockerさえインストールされていればどこでも動く。 このため上記のように環境の違いが問題になることがない。

つまり、awsgcpVPS、オンプレミスどこでもDockerさえ動けば即座に動く。プラットフォームに依存しない。

環境設定がコードで表現されている

新規に環境を構築して移したくても、 現在動いている環境のOSやミドルウェアの設定がどうなっているのかわからず困る場合がある。

Dockerであれば基本的にDockerfileやdocker-compose.ymlといったファイルに設定がコードとして記載されている。 gitで変更履歴も管理できる。

(デメリット)問題が起こった時、原因追求が複雑になる

Dockerを使うとレイヤーが増えるため、問題が起こった時の原因の追求が難しくなる。 例えば「ネットワークが通らない」という問題が発生したときに「Dockerコンテナ間の通信」も考えないといけなくなるため複雑化する。