みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Docker Desktop は必要か

Docker Desktop
The #1 containerization software for developers and teams
Docker Desktop: The #1 Containerization Tool for Developers | Docker

便利なソフトウェアだと思いますが,必ずしも無料ではありません.

Pricing | Docker

また,実行速度やCPUアーキテクチャの問題もあります.

Linux コンテナを MacOS や Windows にインストールした Docker Desktop で使用する場合,WSL2 *1 や Virtualization framework *2 などの仮想化技術を内部で使用することになります.様々な工夫により,仮想環境の実行速度は向上しています*3が,どんなに仮想化技術が進化しても,直接 Linux を実行する方が高速なはずです*4.また,実行速度は CPU 以外にも,メモリの帯域,I/O 速度,ネットワーク速度など多岐に渡る要素で構成されることにも注意が必要です.

2023 年現在,MacOS を使用する場合,CPU は ARM になっていると思います.ローカルで実行するだけならば問題となりませんが,クラウドにデプロイする用途で開発する場合,クラウドの実行環境も考慮する必要があります.多くは x64 なので,Docker イメージを作成する際にアーキテクチャを x64 にせざるを得ない場合があります *5.ARM, x64 両方に対応した Docker イメージを作成することも可能ですが,手間がかかります.

また,Docker Engine はサーバー・クライアント型のアプリケーションとして設計されているので,実行環境とクライアントを分離できます.Apache License なので無料で利用可能です.したがって,Docker Desktop を使って 1 台のパソコンですべてをまかなうのではなく,実行環境用に Linux マシンを別に 1 台用意して,それをクライアントから操作すればよいです.

具体的な設定については以下をご覧ください.

MacOSやWindowsからsshでDockerを操作する - みーのぺーじ

rootless Dockerを別のマシンのDocker CLIから使えるようにする - みーのぺーじ

Ubuntu Serverにrootless Dockerをインストールする - みーのぺーじ

このように,パソコンを 2 台使うメリットは大きいです.デメリットはパソコンの購入費用が追加で必要となることですが,500 ドルの安価なデスクトップパソコンの購入費用と,月 9 ドルの Team プランを比較すると,56 ヶ月 (約 5 年) でもとが取れる計算です.

個人で Docker Desktop を使って気軽に始めるならばよいですが,仕事で使うとなるとサーバー用に別途 1 台用意した方がメリットが大きいように思います.

参考

*1:Docker Desktop WSL 2 backend on Windows | Docker Docs

*2:Virtualization | Apple Developer Documentation

*3:https://www.publickey1.jp/blog/23/macosdocker-5docker_desktop_419.html

*4:同じスペックのハードウェアで適切に設定した場合の理想.Linux よりも高速に Linux を実行できる仮想化技術ができたら革命的だとは思いますが,実際は特定のハードウェアに対して Linux の対応が限定的などの理由により,逆転現象が部分的に存在する可能性はあります.

*5:https://cloud.google.com/compute/docs/instances/arm-on-compute?hl=ja など,ARM を部分的に利用可能ですが,ほとんどは x64 です.