たのしく生きたい

いつもニコニコゆるふわブログです

Docker CLI 互換となる nerdctl を Intel Mac で動かしてみた

Docker Desktopの有料化

www.docker.com

どうやら個人で利用する分には、これまで通り無料で使えそう。

法人やビジネス利用している場合は規模によって有料化になりそうだけど、有料となる範囲がどの程度になるのかちょっとよくわからない。Docker CLIだけであれば引き続き無料で使えるかもしれない。

Docker Desktopは便利だけど、なんやかんや使ってる機能の範囲はVMCLIがあればそれで良いという感じなので、代替案を考えている。

Docker Engine以外のコンテナ実行環境について

少し前に、Kubernetesがdocker engineを非推奨にするという話題が盛り上がっていた。

blog.inductor.me

また、AWS Fargateの新しいプラットフォームバージョン(1.4.0)では、コンテナ実行環境がDocker Engineからcontainerdに変更になるという話もあった。

aws.amazon.com

それまでコンテナランタイムというものがよくわかってなくて、「どうやらコンテナ = Docker ってわけではなさそうだ」とぼんやり思っていた程度だったが、この辺りからDocker以外の何かを意識するようになった。

そんななかで、手元の環境においてDocker以外でコンテナを動かす手段は何かないか調べていて、 nerdctlというCLIツールにたどり着いた。

nerdctlとは

Docker CLI互換のOSSツールである*1。Docker CLIで使えるコマンドがほとんどサポートされており、オプションなども同じで使用感がほとんど変わらなさそう。

github.com

Docker CLIを互換することが目標ではなく、Docker CLIでは提供できていない機能を実現するというところに目的が置かれているっぽい。

The goal of nerdctl is to facilitate experimenting the cutting-edge features of containerd that are not present in Docker.

LinuxWindows(WSL2)では、バイナリが用意されており手順に沿ってインストールすればそのまま使える。一方、macOSの場合はLimaというプロジェクトにおいてnerdctlが使えるようにLinux VMなどが用意されている。

github.com

 Limaを使ってnerdctlを実行してみる

というわけで、Limaを通してmacOSでnerdctlを実行し、コンテナを動かしてみる。

検証環境

使ってる環境はこれです。M1ではなくIntelです。また、わけあってBig SurではなくCatalinaです。

MacBook Pro (13-inch, 2020, Thunderbolt 3ポートx 4) - 技術仕様

M1 Macは手元にないので試せていないが、これを参考にすると良い気がする。

手順

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とか。

podman.io

qiita.com

昔なつかしdocker-machineを使うという手もあるっぽい。

moznion.hatenadiary.com

AWSを使っている場合、CDKだったりLambdaのビルドだったりで、もしかしたらDocker依存になってるところがあるかもしれない。その辺りの影響範囲や対応策については、公式が良い感じにアナウンスしてくれることを期待している。

そういえば関係ないけど、Amazon ECS on EC2のコンテナエンジンがDocker Engineからcontainerdに置き換わるのはいつですか?

有料化に対するお気持ち

公式のアナウンスにもある通り、Docker Desktopは個人利用であれば引き続き無料で使えるっぽい。また、ビジネス利用であっても小規模なチームや組織なら有料化の対象外かもしれない。この辺りは、自分たちが該当するかどうか各々調べる必要がありそう。

上にいくつか代替案を挙げてみたけど、そのうち他の企業やコミュニティからDocker Desktopを互換した何かが出てくるかもしれない。もう出てる?

とはいえ、ビジネス利用だったらお金を払ったら良いじゃん、と思う。一番高いBuisinessプランでも $21 /user/month だし、回避策をごにょごにょするよりコストは安く上がりそう*3

www.docker.com

OSSベースのマネタイズをするのは難しいんだな、というのがぼんやりとした感想。これをきっかけに、特定の企業とかが揉め出したりとかしないと良いんだけど……とちょっとだけハラハラした気持ちになる。でもDockerを生み出した会社がマネタイズできなくて潰れちゃうみたいなのは良くないよね、という素朴な気持ちがある。

それではみなさま、良きコンテナライフを。

*1:nerdってどういう意味? オタク?」って思ったけど、どうやらcontainerdってことらしい。

*2:なんとなく、evilみを感じる。Podmanは公式で書いちゃってるけど。 https://podman.io/

*3:ここに記載した金額は2021/9/1現在のものです。と一応注釈。