MacでDockerデスクトップをインストールしないで使う方法。(lima)

Page content

Docker Desktopを使用してもいいけど、 Limaっていうのを使用してDockerを使おうかなと思ったので、めも。 ただ、limaは、dockerやdocker-compose のコマンドがすべて使えるわけではないので、コマンドライン版のDockerもインストールする。

githublima-vm/lima

インストール

HomeBrewでインストールします。

limaだけでなく、Dockerコマンドを使用したいので、Dockerおよびdocker-composeもインストール。

brew install lima
brew install docker
brew install docker-compose

Docker用のイメージを構築

limaのサイトからdocker.yamlを取得する

github /lima-vm/lima/examples/docker.yaml https://github.com/lima-vm/lima/blob/master/examples/docker.yaml

wget https://github.com/lima-vm/lima/raw/master/examples/docker.yaml

docker.yamlを修正

イメージを変更

Dockerしか使わないので、容量を少なくするためにubuntuからDebianに変更

images:
  - location: "https://cloud.debian.org/images/cloud/bullseye/20230124-1270/debian-11-generic-amd64-20230124-1270.qcow2"
    arch: "x86_64"
    digest: "sha512:fa152c6159dcb73adb1b573da3631937068c6a465ce7565a16dcce7aebd27c9a62ad783296d408300b99616cad89b8c0092e11df0fc2aa423334d741ac83b1a2"
  - location: "https://cloud.debian.org/images/cloud/bullseye/20230124-1270/debian-11-generic-arm64-20230124-1270.qcow2"
    arch: "aarch64"
    digest: "sha512:d714ed2b70322bb2c4adc588f96671192a5ca67f70e20c3fb51c89d55b6a9646f00a6e6f0e5da241b7017916bb19b65a5703a1e3b3869a89c0da7047ac6c4e53"

リソースを変更

cpus: 4
memory: "8GiB"
disk: "100GiB"

書き込み権限

ドキュメントフォルダだけ書き込めるようにしてます

mounts:
  - location: "~"
    mountPoint: null
    writable: null
  - location: "~/Documents"
    writable: true

個人で使う時は、ユーザー全て書き込める様にしてます。

- location: "~"
  writable: true

実際に使用するyamlは、こちら

実行

以下を実行して構築。

limactl start ./docker.yaml
# --debugをつけると、エラーが発生した際に原因がわかりやすくなる
# limactl start ./docker.yaml --debug

確認

構築出来ているか確認する

limactl ls
❯ limactl ls         
NAME      STATUS     SSH                VMTYPE    ARCH      CPUS    MEMORY    DISK      DIR
docker    Running    127.0.0.1:60006    qemu      x86_64    4       8GiB      100GiB    ~/.lima/docker

仮想マシンに入る

limactl

Dockerが構築されている仮想マシンに直接入るには、以下のコマンドを実行する。

入ったあとはexitで仮想マシンから出る。

limactl shell docker

DOCKER_HOST 環境変数

.zshrc.zprofile(MacOSのバージョンによっては.bash_profile)に DOCKER_HOST環境変数を追記して、Dockerのベースをlimaの仮想マシンで使用するように変更する。(Limaのバージョンによっては内容が少々変わる可能性がある)

export DOCKER_HOST=unix:///${HOME}/.lima/docker/sock/docker.sock

シェル起動時にVM起動

システムを再起動すると、作成した仮想環境はstopの状態になるので、先程の.zshrcに仮想環境を立ち上げるように追記する。

limactl start docker