🍎

Lima + docker.ymlの設定方法

2022/01/16に公開

Docker Desktop for Macから Lima に乗り換えるための設定方法のメモ。

環境

  • macOS 11.6.2 (Apple M1)
  • Homebrew 3.3.10

初期設定

$ brew install lima
$ curl -O https://raw.githubusercontent.com/lima-vm/lima/master/examples/docker.yaml
# Docker Desktop for Macのデフォルト値と合わせる
$ cat >> docker.yaml <<EOS
cpus: 2
memory: 2GiB
disk: 60GiB
EOS
# そのままEnterする
$ limactl start docker.yaml
? Creating an instance "docker"  [Use arrows to move, type to filter]
> Proceed with the default configuration
  Open an editor to override the configuration
  Exit
$ echo 'export DOCKER_HOST=unix://$HOME/.lima/docker/sock/docker.sock' >> ~/.bashrc
$ rm docker.yaml

ログイン時に自動で起動したい場合は launchd を使用する。
絶対pathが必要なのでユーザ名とhomebrewのpathを適宜書き換える。

~/Library/LaunchAgents/com.github.lima-vm.lima.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.github.lima-vm.lima</string>
    <key>EnvironmentVariables</key>
    <dict>
      <key>PATH</key>
      <string>/opt/Homebrew/brew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
    </dict>
    <key>ProgramArguments</key>
    <array>
      <string>/opt/Homebrew/brew/bin/limactl</string>
      <string>start</string>
      <string>docker</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>AbandonProcessGroup</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/Users/user/Library/Logs/com.github.com.lima-vm.lima/launchd-stdout.log</string>
    <key>StandardErrorPath</key>
    <string>/Users/user/Library/Logs/com.github.com.lima-vm.lima/launchd-stderr.log</string>
  </dict>
</plist>

Docker CLI

既存のDocker Desktopは予め削除する。

$ brew install docker docker-credential-helper
$ mkdir -p ~/.docker/cli-plugins
$ curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-darwin-aarch64 -o ~/.docker/cli-plugins/docker-compose
$ chmod +x ~/.docker/cli-plugins/docker-compose
$ curl -SL https://github.com/docker/buildx/releases/download/v0.8.2/buildx-v0.8.2.darwin-arm64 -o ~/.docker/cli-plugins/docker-buildx
$ chmod +x ~/.docker/cli-plugins/docker-buildx

初期化方法

# 設定ファイルは ~/.lima/docker 以下にある
$ limactl delete docker
$ limactl prune

おまけ

testcontainers-javaの設定

testcontainers-java を使用している人は、testcontainers/ryukが動かないので以下の環境変数を設定する必要がある。

export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/run/user/[uid]/docker.sock

[uid] はvm内で id もしくは docker context ls を実行することで確認できる。
(以下の例だと uid=502 )

$ limactl shell docker
lima@lima-docker:~$ id
uid=502(lima) gid=1000(lima) groups=1000(lima)
lima@lima-docker:~$ docker context ls
NAME         DESCRIPTION                               DOCKER ENDPOINT                    KUBERNETES ENDPOINT   ORCHESTRATOR
default      Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                              swarm
rootless *   Rootless mode                             unix:///run/user/502/docker.sock

Discussion