はじめに
従来無料で使用できていたDocker Desktop(Docker Desktop for Windows、Docker Desktop for Mac)ですが、2021年9月1日に有料化され、2022年1月31日で有料化の猶予期間が終了しました。2022年2月1日からは一定規模以上の企業における利用は有料化され、Pro、Team、Businessといった有料プランを契約する必要があります。
このニュースが発表されて以来、Docker Desktopの利用者は、有料プランを契約してDocker Desktopを継続利用するか、別の代替手段を探すかを迫られ、多くの代替手段が検討・記事化されてきました。(Docker Desktopには特に不満が無かったので、有料プランが契約できるのであれば契約したいところですが)
私は普段Macを使用していますが、いくつかの代替手段を渡り歩いて使用してきましたので、それぞれのメリット・デメリット、および、現時点(2022年2月3日)のおすすめをまとめたいと思います。
なお、当記事における代替手段は、「Dockerを継続して利用したい(Podmanなどの別のコンテナ環境は考えない)」、「(Docker CLIはbrewで容易に導入可能なので)Dockerデーモンをどうやって準備するか」という観点で考えています。
また、当記事では代替手段の詳細な導入手順、利用手順は記載せず、他の記事を参照するかたちでまとめています。
前提環境
- マシン:MacBook Pro (14インチ, 2021)(M1 Max, メモリ64GBモデル)
- OS:macOS Monterey 12.0.1
MacにおけるDocker Desktop代替手段
Mac環境において、Docker Desktopの代替手段としては以下のようなものが挙げられます。Docker Desktopの代替手段として開発されたものではなくても、Dockerデーモン(を持つLinux VM)を提供してくれるという意味で挙げています。
この中でのおすすめは「Rancher Desktop」になります。他の選択肢は飛ばしておすすめだけ確認したい場合は、当記事のRancher Desktopの項を参照ください。
ツール名 | 概要 | ライセンス |
---|---|---|
minikube | Mac、Linux、Windowsのローカル環境でKubernetesクラスタを提供する | Apache License 2.0 |
lima | Mac、Linux環境で、自動的なファイル共有、ポートフォワード機能を持つLinux仮想マシンを用意・利用できるようにする(WindowsでのWSL2的なツール) | Apache License 2.0 |
Colima | Mac、Linux環境で、最小限の手間で(limaを用いた)コンテナ環境を提供する | MIT License |
Rancher Desktop | Mac、Linux、Windowsのローカル環境でKubernetesクラスタ、および、コンテナ管理機能を提供する | Apache License 2.0 |
minikube
minikubeは、ローカルでKubernetesクラスタを構築・利用できるようにする定番のツールです。
minikubeの場合、minikubeが作成したLinux VM(DriverとしてHyperKit、VirtualBox、Parallelsなどを利用)上のDockerデーモンをネットワーク経由で利用することになります。
minikubeによるDocker環境構築の手順は、以下の記事を参照ください。
なお、コロナの影響によりVPNで在宅勤務している方は多いと思いますが、VPNソフトウェアとしてCisco AnyConnectを使用している場合、minikubeのVMが起動しない、アクセスできないケースがあります。このことにより、個人的にはminikube方式は利用しなくなりました。
【参考】
lima
limaは、WindowsでのWSL2的な機能を提供してくれるツールです。この後に紹介するColima、Rancher Desktopは、内部的にlimaを使用しています。
limaを使用すると、MacでLinux VMを簡単に導入・起動することができます。デフォルトではUbuntuですが、Alpine、Rockyなどを利用することも可能です。以下はデフォルトのUbuntuを導入・起動するまでの手順で、非常に簡単なことが分かります。
# limaのインストール
brew install lima
# デフォルトのUbuntu VMを導入・起動
limactl start
# Ubuntuのシェルに入る
lima
limaでは、起動するVMの設定をYAMLファイルで記述します。Dockerが導入されたVMの設定例がlimaの公式で提供されており、このVMに対してMacのDocker CLIから使用するよう設定することでDocker環境を構築できます。
以下の記事では、より詳細な設定の内容、手順が記載されています。
limaのLinux VMは、minikubeのようにAnyConnect起因のNW系の問題が生じず、limaによるDocker環境には満足していたのですが、YAMLファイルを自分で用意する必要がある点で、まだDocker Desktopの容易さには及びません。
Colima
Colimaは、limaを内包し、limaでのVM準備の手間を省き、より簡単にコンテナ環境をセットアップできるようにしたツールです。
以下のコマンドを実行するだけでDocker環境が手に入ります(他のツールも同様ですが、Docker CLIは別途導入必要)。
brew install colima
colima start
セットアップの手順は以下の記事も参照ください。
Colimaのよいところは、Kubernetes環境もColimaで用意できる点です。Colimaを起動する際、--with-kubernetes
オプションを付けるだけです。
colima start --with-kubernetes
個人的にはまった点は、limaではDockerデーモンにアクセスするための設定として、~/.zshrc
、~/.bashrc
に環境変数DOCKER_HOST
を設定していたのですが、limaを試した後にColimaを試したため、この設定が残ったままになっていて、DOCKER_HOST
が間違った先を示していたため、dockerコマンドがエラーになるという問題に悩まされました(Colima自体の問題ではなく、私の設定不備です)。
Colimaは手軽さという点でほぼ満点なのですが、Docker DesktopのようなGUIが提供されていないというのが唯一の難点です。
Rancher Desktop
Rancher Desktopは、SUSEからリリースされた、デスクトップ環境におけるコンテナ・Kubernetesの環境構築・管理ツールです。Docker Desktopの無償猶予期間が終了した2022年2月1日にバージョン1.0がリリースされました。
Mac、Linux、Windowsのそれぞれに対応しており、Mac・Linuxではlima、WindowsではWSL2によりLinux VMを稼働させています。
Rancher Desktopの導入は非常に簡単で、Macであればdmgファイルをダウンロードし、dmgファイルをダブルクリックして、展開されたファイルをApplicationsフォルダに配置するだけです。
ApplicationsフォルダのRancher Desktopを起動すると、Linux VM、および、Kubernetesクラスタの作成処理が自動的に実行され、完了後はdockerコマンドでDockerが利用可能になっています。
Rancher DesktopのKubernetesの設定画面が以下です。Kubernetesのバージョン、コンテナランタイム、メモリ・CPUの割り当てなどが設定できます。
「Reset Kubernetes」ボタンで、Kubernetesクラスタを作り直すこともできるようになっています。Kubernetesに試しに色々と入れた結果、初期化したいケースがあると思いますが、そのような場合に使えます。
Kubernetesが不要な場合、ノードを削除することで無効化できるようです。ただ、このノードの削除がDockerコンテナに影響を与えることもあるようです。もし問題が生じた場合は上記の「Reset Kubernetes」ボタンで元に戻しましょう。
Rancher Desktopのインストールの流れ・詳細は以下の記事も参照ください。
まとめ
私自身は、minikube → lima → Colima → Rancher Desktop と試し、現時点ではRancher Desktopで特に不自由なく利用できています。
ただ、Mac環境でLinux VMが欲しいという点では lima を使用していますので、Docker目的ではなくLinux目的で lima を導入・利用することはおすすめです。