Docker CLI 互換となる nerdctl を Intel Mac で動かしてみた
Docker Desktopの有料化
どうやら個人で利用する分には、これまで通り無料で使えそう。
法人やビジネス利用している場合は規模によって有料化になりそうだけど、有料となる範囲がどの程度になるのかちょっとよくわからない。Docker CLIだけであれば引き続き無料で使えるかもしれない。
Docker Desktopは便利だけど、なんやかんや使ってる機能の範囲はVMとCLIがあればそれで良いという感じなので、代替案を考えている。
Docker Engine以外のコンテナ実行環境について
少し前に、Kubernetesがdocker engineを非推奨にするという話題が盛り上がっていた。
また、AWS Fargateの新しいプラットフォームバージョン(1.4.0)では、コンテナ実行環境がDocker Engineからcontainerdに変更になるという話もあった。
それまでコンテナランタイムというものがよくわかってなくて、「どうやらコンテナ = Docker ってわけではなさそうだ」とぼんやり思っていた程度だったが、この辺りからDocker以外の何かを意識するようになった。
そんななかで、手元の環境においてDocker以外でコンテナを動かす手段は何かないか調べていて、 nerdctlというCLIツールにたどり着いた。
nerdctlとは
Docker CLI互換のOSSツールである*1。Docker CLIで使えるコマンドがほとんどサポートされており、オプションなども同じで使用感がほとんど変わらなさそう。
Docker CLIを互換することが目標ではなく、Docker CLIでは提供できていない機能を実現するというところに目的が置かれているっぽい。
The goal of nerdctl is to facilitate experimenting the cutting-edge features of containerd that are not present in Docker.
LinuxやWindows(WSL2)では、バイナリが用意されており手順に沿ってインストールすればそのまま使える。一方、macOSの場合はLimaというプロジェクトにおいてnerdctlが使えるようにLinux VMなどが用意されている。
Limaを使ってnerdctlを実行してみる
というわけで、Limaを通してmacOSでnerdctlを実行し、コンテナを動かしてみる。
検証環境
使ってる環境はこれです。M1ではなくIntelです。また、わけあってBig SurではなくCatalinaです。
MacBook Pro (13-inch, 2020, Thunderbolt 3ポートx 4) - 技術仕様
M1 Macは手元にないので試せていないが、これを参考にすると良い気がする。
Docker Desktop なしで動いた✨
— Tori Hara (@toricls) 2021年9月1日
M1 Mac で Patched QEMU、Lima をインストール、alias docker="lima nerdctl" して docker ps するところまで Gist にログを残した
nerdctl が "Docker-compatible CLI for containerd" を謳っているだけあってホントにそのままですごいhttps://t.co/xjta4Mx23u pic.twitter.com/mqmwTnpQe2
手順
READMEに書いてある通り、そのまま実行する。
$ brew install lima $ limactl start $ lima nerdctl run -d -p 8080:80 --name nginx:alpine
これで無事にnginxが動く。やったー。
Docker Desktopをアンインストールして alias docker='lima nerdctl'
とか邪悪な設定をすれば、今まで使ってたコマンドをそのままそっくり使えそう*2。
他の代替案
nerdctl以外にも、代替案はありそう。Podmanとか。
昔なつかしdocker-machineを使うという手もあるっぽい。
AWSを使っている場合、CDKだったりLambdaのビルドだったりで、もしかしたらDocker依存になってるところがあるかもしれない。その辺りの影響範囲や対応策については、公式が良い感じにアナウンスしてくれることを期待している。
そういえば関係ないけど、Amazon ECS on EC2のコンテナエンジンがDocker Engineからcontainerdに置き換わるのはいつですか?
有料化に対するお気持ち
公式のアナウンスにもある通り、Docker Desktopは個人利用であれば引き続き無料で使えるっぽい。また、ビジネス利用であっても小規模なチームや組織なら有料化の対象外かもしれない。この辺りは、自分たちが該当するかどうか各々調べる必要がありそう。
上にいくつか代替案を挙げてみたけど、そのうち他の企業やコミュニティからDocker Desktopを互換した何かが出てくるかもしれない。もう出てる?
とはいえ、ビジネス利用だったらお金を払ったら良いじゃん、と思う。一番高いBuisinessプランでも $21 /user/month だし、回避策をごにょごにょするよりコストは安く上がりそう*3。
OSSベースのマネタイズをするのは難しいんだな、というのがぼんやりとした感想。これをきっかけに、特定の企業とかが揉め出したりとかしないと良いんだけど……とちょっとだけハラハラした気持ちになる。でもDockerを生み出した会社がマネタイズできなくて潰れちゃうみたいなのは良くないよね、という素朴な気持ちがある。
それではみなさま、良きコンテナライフを。