lima 紹介

| 2 min read
Author: shigeki-shoji shigeki-shojiの画像

庄司です。

M1 チップ搭載の mac で Windows の WSL2 のような感覚で仮想 Linux 環境を手に入れたいとの思いから、lima というプロジェクトがあることを知り早速使い始めました。

インストールは、Homebrew を使うと楽にインストールすることができます。

brew install lima

仮想マシンの起動

#

次のようにコマンドを実行するとデフォルトの仮想マシンが起動します。後述しますが、$HOME/.lima/default ディレクトリにデフォルトの仮想マシンの設定ファイルがあります。

limactl start

デフォルトで起動しただけで、containerd が起動されます。また、nerdctl もインストール済ですので、そのままでも Docker を利用するのと似た感覚でコンテナの操作を行うことができます。

そうはいっても、docker-ce をインストールして使いたい場面、特に、macOS のターミナルから docker コマンドを実行したい場合などもあると思います。この場合は、lima コマンドで仮想環境に入って、Install Docker Engine on Ubuntu の手順どおりに作業するとインストールすることができます。

ユーザのホームディレクトリは、読み込み専用で仮想環境のホームディレクトリにマウントされていますし、両方で読み書きが可能な /tmp/lima ディレクトリもあります。

Docker を使った Web アプリケーションの実行

#

公式ドキュメントに書かれた手順で docker-ce をインストールして (もちろん nerdctl でも同様なことはできます)、Web アプリケーションを次のように起動したとします。

docker run -it --rm -p 8080:8080 [Web アプリケーションのイメージ]

このように起動すると、期待どおり、http://localhost:8080/ のようにブラウザからアクセスして Web アプリケーションの動作を確認することができます。

ただ、問題が一つあります。デフォルトの設定のままだと、仮想マシンを実行しているホストからのアクセスは可能ですが、ネットワークにつながっている他の PC からのアクセスができません。

lima で実行しているアプリケーションのポートに外部から接続したい場合は、設定ファイルを編集する必要があります。

$HOME/.lima/default/lima.yaml ファイルでコメントされているところに、portForwards が見つかります。これを設定することで解決することができます。

portForwards:
- guestPort: 8080
  hostIP: "0.0.0.0"

このように修正して、limactl stoplimactl start 等で再起動して、Web アプリケーションを実行すると、外部からのアクセスも可能になります。

実は私はこの事に気づくまでにかなり時間を浪費してしまいました。

まとめ

#

lima は随分軽い印象があります。intel の macOS でも動いているので個人的には満足しています。

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. 基本から理解するJWTとJWT認証の仕組み(2022-12-08)
  2. 直感が理性に大反抗!「モンティ・ホール問題」(2022-07-04)
  3. Nuxt3入門(第4回) - Nuxtのルーティングを理解する(2022-10-09)
  4. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する(2022-10-28)
  5. Podman Desktopがv1.0になったのでwindows版を試してみたところ、気付いたらv1.1に上がるくらいに機能豊富だった話(2023-06-09)
  6. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する(2022-09-25)
  7. VS Code で .NET MAUI の開発環境を構築する(macOS/iOS)(2023-08-14)
  8. Pytestを使ってみる(その2:VSCode拡張機能編)(2023-03-05)
  9. GitHub Actions - 構成変数(環境変数)が外部設定できるようになったので用途を整理する(2023-01-16)
  10. 統計学で避けて通れない自由度の話(2022-06-20)