DockerizeしたCLIを使うことについて
昨今、Dockerを使って開発することが当たり前になっている、という人も増えているのではないか。
その場合、開発に必要なツールがDockerに対応していると楽だ。
それはサーバ製品に限らない。
人によっては、 mysql
コマンドやAWS CLIといったクライアントツールもDockerizeされたコンテナイメージを利用しているということもあるだろう。
…で、それは多少のトレードオフはあるものの、概ね便利と云って良さそうだ。
Pros
- インストールが楽。docker runしたらイメージが落ちて来るので、インストールのために何かする意識がほぼ必要ない。
- ツールの依存物がコンテナに閉じるので、ローカル環境を汚さないで済む。
- 環境差異にまつわるトラブルを減らせる。「オレの環境では動くのに」問題を減らせる。
Cons
- Dockerに関するトラブルがあったときに、仕組みをわかってないとシューティングが難しそう。
- CLIの起動にオーバーヘッドがかかり、フットプリントが大きくなる(と思う)。気にならないレベルなら良いのでは。
- ストレージを消費しやすい。
1つ目については、CLIにちゃんと適切な環境変数なりを渡してあげないといけないとか、作業ディレクトリを用意しないといけないとか、そういう注意点はありそう。
2つ目、3つ目については、Alpine LinuxなどミニマルなOSをベースイメージとすることで、ある程度抑えられる。
最近、自分でも勉強がてらAWS CLI*1やAnsible*2をDockerizeしてみたけど、まだちゃんと使ってみてないので、特に上の1つ目の点にはハマりそうだなと思っている。