MacでDockerデスクトップをインストールしないで使う方法。(lima)
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