🛥️

M1 mac上でDockerをx86-64/arm64両方扱えるようにLimaの設定する。

2022/01/10に公開

Docker for Mac よりも Lima を使ったほうが早い、それと arm ではなく x86_64 で使いたいことがあるので m1 mac の Docker 環境を Docker for Mac から Lima へ変更しました。

Lima構築

https://github.com/lima-vm/lima

$ brew install lima

$ limactl start
最初のVMはデフォルトで作成しました。ここで作成されるのは arm64 のubuntuです。

lima 内の Ubuntu へ docker インストール

lima をつけてコマンドを実行すると最初に作成した default と名前のついたVMで実行されます。

$ lima sh -c 'curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg'

$ lima sh -c 'echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null'

$ lima sudo apt-get update

$ lima sudo apt-get install docker-ce docker-ce-cli containerd.io

起動確認
$ lima sudo docker run hello-world

macからLima内のDockerを使う

Docker desktop は不要、Docker CLIがセットアップされている状態で

export DOCKER_HOST='unix://$HOME/.lima/default/sock/docker.sock
を追記

僕は fish なので
set -x DOCKER_HOST "unix://$HOME/.lima/default/sock/docker.sock"

起動確認、次は先頭に lima をつけず
$ docker run hello-world

これで比較的高速な Docker を使えるようになりました。 しかし arm64 なので x86-64 の vm も作っていままでの開発環境をそのまま使えるようにします。

x86-64

先程はyamlを指定せずdefaultでvmを作りましたが、今回はyamlで設定を書いて構築します。
公式のリポジトリにDockerも入れてくれるyamlがあったので
https://github.com/lima-vm/lima/blob/master/examples/docker.yaml
これをダウンロードして arch: "x86_64" を追記、x86-64.yaml に rename しました。

そのyamlを指定して構築します。

$ limactl start x86-64.yaml

x86-64という名前のVMが作られます。

このx86-64マシンでDockerを使いたい場合は先程の環境変数
export DOCKER_HOST='unix://$HOME/.lima/default/sock/docker.sock

export DOCKER_HOST='unix://$HOME/.lima/x86-64/sock/docker.sock
のように切り替えます。

よろしければTwitterのフォローお願いします。
https://twitter.com/iori_eth

Discussion