MENU

nerdctl — Docker互換CLIでcontainerdを操る次世代クライアント

nerdctl アイキャッチ
nerdctl

nerdctl(ナードコントロール)は、コンテナランタイムのcontainerdを直接操作するための、Docker互換のコマンドラインツールです。NTTの須田瑛大(あきひろ・すだ)を中心とするcontainerdコミュニティが2020年12月にバージョン0.1を公開し、Dockerのdockerサブコマンド体系をほぼそのまま再現しながら、Dockerデーモン無しでcontainerdに直結できる点を最大の特徴としています。Lima、Rancher Desktop、Finchといった次世代のローカル開発環境の標準CLIとして採用され、Docker Desktopの代替を支える基盤の一つになっています。

目次

この記事の目次

  1. 互換・先進機能・rootlessの三本柱
  2. containerdユーザーCLIの不在を埋める
  3. Docker Desktop代替としての構成
  4. Docker CLIとの違い
  5. まとめ

互換・先進機能・rootlessの三本柱

互換・先進機能・rootlessの三本柱

nerdctlの設計目標は「containerdを直接使うのに最も使いやすいCLIになる」ことです。nerdctl runnerdctl psnerdctl buildnerdctl pullpushnerdctl compose upなど、Docker CLIで日常的に使われるサブコマンドはほぼ全てカバーされており、Dockerユーザーがそのままの感覚で乗り換えられます。Compose v2との連携も組み込み済みで、nerdctl composeコマンドでdocker-compose.yamlを直接実行できます。

Dockerには無いcontainerd固有の機能も積極的に取り込んでいるのが特徴です。stargz-snapshotterによるlazy pull(イメージ全体をダウンロードせずに起動)、OCI imageの暗号化(image encryption)、P2Pでイメージを配布するNydusやSOCIなど、コンテナ起動高速化の最新研究成果を素早く利用できる窓口になっています。またrootless実行も第一級でサポートされ、一般ユーザー権限のままcontainerdとnerdctlを完結させる構成が標準化されました。

containerdユーザーCLIの不在を埋める

containerdユーザーCLIの不在を埋める

nerdctlの誕生は、「containerdは強力だがユーザーが直接使うCLIが弱い」という長年の課題への回答でした。containerd付属のctrコマンドは存在しましたが、人間向けというよりはデバッグ用の低レベルツールで、Dockerに慣れたユーザーには扱いが難しいものでした。2020年、NTT研究所の須田瑛大(containerdのメンテナの一人)が、Docker互換のフロントエンドとしてnerdctlの開発を始め、同年12月に最初のリリース0.1を公開しました。

2022年7月にnerdctl 1.0.0が公開され、Dockerコマンドのほぼ全機能をカバーする状態に到達しました。同時期にRancher(SUSE)のRancher Desktopが内部CLIにnerdctlを採用し、2023年にはAmazonが発表した開発者向けコンテナクライアントFinchがnerdctl+LimaをmacOS/Windows向けに包んだ形で公開されました。Lima自身も須田氏が中心となって開発したmacOS用Linux VMツールであり、「nerdctl×Lima×containerd」というスタックが、Docker Desktopの有償化以降の代替案として急速に普及しています。

Docker Desktop代替としての構成

Docker Desktop代替としての構成

macOSやWindowsのローカル開発でnerdctlを使う場合、軽量Linux VMを介する構成が一般的です。macOSではHomebrewでLimaをインストールし、limactl start template://dockerのようにテンプレート指定でVMを起動すると、VM内にcontainerdとnerdctlがセットアップされ、ホスト側からはlima nerdctl run nginxのような呼び出しでコンテナを操作できます。VM内のファイルシステムはホストのワーキングディレクトリと自動共有されるため、Docker Desktopに近い使用感を保てます。

WindowsではWSL2上のUbuntuにcontainerd+nerdctlをインストールするか、Rancher DesktopやFinchをインストールして同等の構成を組みます。docker-compose.yamlnerdctl compose upでほぼそのまま動き、ビルドはBuildKit統合によりdocker build相当の高速化が効きます。Docker Hubのイメージもそのままpullでき、Dockerfile資産は完全に流用可能です。ライセンス・コストの問題でDocker Desktopを使えなくなった企業の開発者にとって、現実的な乗り換え先として広く採用されつつあります。

Docker CLIとの違い

Docker CLIとの違い

Docker CLIとnerdctlは「同じ言語を話す別エンジンのフロントエンド」と言えます。コマンド体系はほぼ同じですが、Docker CLIはDockerデーモンに依存し、nerdctlはcontainerdに依存します。containerdに新機能が入った瞬間にnerdctl側から試せるので、lazy pullやimage encryption、SBOM/Provenanceなど最新研究成果を体験するには最短ルートになります。

一方で、Docker Desktopが提供するGUI、拡張機能マーケットプレイス、Kubernetes統合などのトータル体験ではDockerが依然優位です。nerdctlは「Docker互換でかつ最新機能を試せるCLI」というユニークな立ち位置で、containerdエコシステムの普及速度に直結する重要なツールとなっています。今後Kubernetes標準ランタイムとしてのcontainerdの地位が強まるほど、ローカル開発でもnerdctlが選ばれる場面は増えていくでしょう。

まとめ

nerdctlはNTTの須田瑛大らが2020年に立ち上げた、containerd用のDocker互換CLIです。Composeやrootless、lazy pullといった機能を備え、Rancher DesktopやFinchの内部CLIとして採用されました。Docker Desktopの代替を検討する場面で、Lima・containerdと組み合わせた構成は実用レベルに達しており、現代の開発環境を考える上で押さえるべき選択肢の一つです。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次