Lima: macOS で Docker Desktop と Rancher Desktop 無しで Docker 環境を使う方法

2023.05.09

最初に

アノテーション メンテナンスチームの shinonome です。
今回は macOS で Docker / Rancher Desktop.app (以下 Desktop.app と呼びます)なしに、Docker 環境を使う方法を紹介したいと思います。

Docker と Linux と macOS

前提として macOS での Docker の稼働要件を記載します。
macOS で Docker を利用するには、必ず裏で Linux 仮想機を Docker の host として立てる必要があります。

それぞれの仮想機の情報は以下の表をご参照ください。

Desktop.app 管理・制御 OS
Docker HyperKit / Virtualization.Framework LinuxKit
Rancher Lima (QEMU) Alpine ※1

※1: Lima プロジェクトがメンテしている alpine-lima です、詳細は https://github.com/lima-vm/alpine-lima を参照してください。

Desktop.app と Lima

Desktop.app の代わりに、Rancher の裏の仮想機管理ツールの Lima を直接使うのが本記事の内容になります。

Desktop.app より、なぜわざわざ Lima を使うのでしょうか、と疑問を持つかと思います。

たまに Docker の host となる Linux 仮想機の方を弄ることが必要となる場合、
Desktop.app の管理下にいる仮想機となると、その仮想機を操作することで Desktop.app が混乱する・壊れるリスクがあるのです。

このリスクを回避するため、Linux 仮想機を自分で立てて管理する方が無難でしょう。そこで、Lima の登場になります。
Lima は仮想機ツールではありますが、今は macOS コンテナー環境を整えるツールとして知られています。

Lima、仮想機ツールとしての紹介はこちらの記事に記載していますので、ご参照ください。

一発で Docker 環境を立ち上げる

Docker 環境向けのテンプレートは Lima が親切に用意してくれているので、
Lima を入れた後、こちらのコマンドですぐ Docker 環境の出来あがりです。
※Lima のインストールは上記記事を確認してください。

limactl start --name=docker template://docker

裏は Ubuntu の仮想機を立てて、docker engine をインストールし、docker の socket を macOS 側にフォワードするように働いています。
詳しくは /usr/local/share/doc/lima/examples/docker.yaml の中身を確認してください。
※dockerd 以外に nerdctl や podman も対応しており、さらに k8s もできますので、公式資料を探ってください。

Docker 環境を使う

環境を使うには、さらに docker cli が必要で、かつフォワードされた docker socket に対して手動で docker context を作成することも必要です。

docker cli については、Homebrew でインストールできます。

brew install docker

docker context の方は上記 limactl start ... の最後の出力通りで作成します。

docker context create lima-docker --docker "host=unix://$HOME/.lima/docker/sock/docker.sock"

使用する context を指定します。

docker context use lima-docker

これで準備は完了です、定番の hello-world で確認しましょう。

docker run hello-world

※VS Code の Docker (ms-azuretools.vscode-docker) 拡張を使っているのでしたら、そのまま使えます。
※拡張 Dev Container (ms-vscode-remote.remote-containers) も勿論使えますよ。

最後に

今回は、macOS で Docker 環境(及び裏の Linux 仮想機)を提供するツール Lima を紹介しました。
裏の Linux を弄ることができる Docker 環境が必要な場合、是非試してみてください。

本ブログ、お役に立てると光栄です。

おまけに

  • Docker Desktop が使っている HyperKit の裏は Apple の Hypervisor.Framework を使っています。
  • Docker Desktop が Apple の Virtualization.Framework を対応し始めたのは 2021 年です。

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。