Docker Machineの今

f:id:ironoir:20210203174513p:plain

業務上ではDockerを使っているものの、他の技術との兼ね合いでDocker for Windowsが入っておらず、Docker Toolboxで開発をせざるを得ない状態になっています。組織の規模から考えると、その状況はしばらく変わらなさそうです。VirtualBox内にホストを作って、その中でDocker Engineを動かして開発をしています。

以前はDocker for Macを使っていたので、今の環境の方がむしろ古くなってしまったわけで、しかたないんですが少し不便です。せめて使い方をちゃんと公式で見つけたいなと思ってたんですが、普通に検索結果には出てこなくて、いったんDockerの公式サイトに行ってからその中で検索しないと出てきません。ちなみにDocker Machineのリファレンスは以下です。

docs.docker.com

ちゃんと残っていてよかったです。Overviewのページを見ると、Docker Machineの使い道は2つあって、1つは上述した、Docker for WIndows/Macが使えない、主に古い開発環境での使用。2つ目は、以下の画像にもあるように「複数のリモートホストへのデプロイ」とのことです。つまり、Docker Toolboxはすでにdeprecatedなんですけど、Docker Machineはそうではなく、ユースケースによっては現役なわけです。

f:id:ironoir:20210203174612p:plain

世間ではDockerよりもだんだんk8sの方にトレンドが移ってきているようにも思うんですが、実はk8sが実際の業務で必要なシステムは喧伝されるほどには多くの数は存在しないでのではないかと勝手に想像しています。その代わりというか、Docker Composeを使った複数コンテナの連携で事足りる場合も多く、各種クラウドなどへのデプロイだとDocker Machineを使えばいい、となるわけです。勉強して感じるのは、Dockerとは別の言葉遣いをしていることが大きいのでしょうが、k8sの利用には結構な学習コストがかかるということ。それらの概念が必要とされるのは、マイクロサービス群を頻繁にアップデートし、しかもそれらの差分がサービス間インターフェースの変更を管理したい場合で、要するにだいたいは現場がそこまで使いこなせないんですよね、きっと。

ただ、わたしの目の前の課題で言うと、VirtualBox内のDocker EngineにVS Codeからつなげたいんですよね。調べていてもDocker Toolboxでうまくやれている記事をまだ見つけられていなくてですね、少し歯痒い思いをしています(Docker for Windowsならいけそうな記述は存在する)。必須ではないのでまたわかったら書こうかな、と思います。