💨

[colima] M1 Macでdocker

2023/09/18に公開

背景

macにDockerを入れたい。
そのためセットアップツールとしてcolimaを使う

用語の整理

  1. colima
    さまざまなDocker Runtimeに対応した。コンテナセットアップツール
    Docker DesktopのCLI版といったところか。
    ただその機能を提供しているのはlimaであり、それにDockerランタイムを加えたただのラッパーである。
    デフォルトはDocker+Limaだが、Containerdを使うCLIも提供している。まずは入れてみよう。

  2. Docker Runtime
    containerdやdocker
    コンテナの実行状態を管理する。
    最近は汎用のコンテナ管理ツールとして、Dockerのほぼ全てがランタイム上で実現されている。

Docker内部構造

READMEを参考に使ってみる

brew install colima
colima start

エラーがでた

[hostagent] Waiting for the essential requirement 1 of 5: "ssh"

で検索すると以下の解決策が出てくる。

colima delete
colima start --arch x86_64

同じ箇所でしばらく止まったが、無事実行できた。

docker run hello-world

nerdctlを使う

Docker pullが早いなどメリットあるのでランタイムをnerdctlにする
nerdctlはcontainerdの一部のため、ランタイムの変更が必要だ。

colima nerdctl install
colima delete
colima start --runtime containerd
nerdctl info
nerdctl run hello-world

こっちの方が起動も早い。
dockerコマンドは使えないので、aliasつけて使おう。

alias docker="nerdctl"

2024/3現在、DevContainerやGitHub Codespacesなどではnerdctlだと利用できないオプションを内部で使っているため利用できない。しばらくはdockerを使うことにする。

参考文献

  1. https://aligach.net/diary/2022/0501/docker-context-and-host/
    contextや.sockに対する理解

  2. https://github.com/abiosoft/colima/issues/424
    本家のイシュー

  3. https://medium.com/nttlabs/docker-to-containerd-4f3a56e6f2b6
    用語の整理とコンテナ管理の最近の動向

Discussion