動かざることバグの如し

近づきたいよ 君の理想に

macでlima使う

久々すぎて記事の書き方忘れたわ

インストール

自力でインストールする方法もあるけどbrew使ったほうが1000倍早い

brew install lima

起動してみる

コマンドは大きく2つ

まずは新規作成してみる 「Proceed with the default configuration」にカーソル合わせてエンター

$ limactl start
? Creating an instance "default"  [Use arrows to move, type to filter]
> Proceed with the default configuration
  Open an editor to override the configuration
  Exit

色々ダウンロードが始まるが、しばらくすると完了と言われる。

INFO[0051] READY. Run `lima` to open the shell.

実際にlimaを操作するにはlimaコマンド

thr3a@lima-default:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=21.10
DISTRIB_CODENAME=impish
DISTRIB_DESCRIPTION="Ubuntu 21.10"

引数で直接コマンドを実行することもできる

$ lima uname -a
Linux lima-default 5.13.0-22-generic #22-Ubuntu SMP Fri Nov 5 13:21:36 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

終了

$ limactl stop

一覧表示

$ limactl ls
NAME       STATUS     SSH                ARCH      CPUS    MEMORY    DISK      DIR
default    Running    127.0.0.1:60022    x86_64    4       4GiB      100GiB    /Users/thr3a/.lima/default

コンテナの起動

Dockerっぽく使える。

$ lima nerdctl run -d --name nginx -p 127.0.0.1:8080:80 nginx

ただDockerコマンドと完全に互換性があるわけではないっぽい。

例えば -d オプションと --rm オプションを同時に使えない

$ lima nerdctl run -d --rm -p 8080:80 nginx
FATA[0000] flag -d and --rm cannot be specified together

なんでや、、、

Dockerコマンドで使う

limaでコンテナの操作は難しい。そこでホスト側にdockerクライアントをインストールして接続して使ってみる

まずはMac側にクライアントインストール

$ brew install docker

確認 ホスト側にDockerデーモンをインストールしてないので当然「Is the docker daemon running?」と怒られる。

$ docker version
Client: Docker Engine - Community
 Version:           20.10.11
 API version:       1.41
 Go version:        go1.17.2
 Git commit:        dea9396e18
 Built:             Wed Nov 17 23:49:46 2021
 OS/Arch:           darwin/amd64
 Context:           default
 Experimental:      true
Cannot connect to the Docker daemon at unix:////Users/thr3a/.lima/docker/sock/docker.sock. Is the docker daemon running?

次にDocker用のインスタンスを建てるために設定をダウンロード

$ curl https://raw.githubusercontent.com/lima-vm/lima/master/examples/docker.yaml > docker.yaml

起動。Open an editor to override the configurationを選択

$ limactl start ./docker.yaml

基本的にデフォルトのままでいいが、ホームディレクトリをマウントして作業することは多いので書き込みOKにしておく

mounts:
  - location: "~"
    writable: true

中に入るとdockerコマンドが使える

➜  ~ limactl shell docker
thr3a@lima-docker:/Users/thr3a$ docker --version
Docker version 20.10.11, build dea9396

とはいえ、結局はdockerコマンドでできたほうが便利なので設定

# To run `docker` on the host (assumes docker-cli is installed):
# $ export DOCKER_HOST=$(limactl list docker --format 'unix://{{.Dir}}/sock/docker.sock')
# $ docker ...

参考リンク