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. 自然言語処理初心者が「GPT2-japanese」で遊んでみた (2022-07-08)
  2. Tauri でデスクトップアプリ開発を始める (2022-07-08)
  3. Deno による Slack プラットフォーム(オープンベータ) (2022-09-27)
  4. Jest再入門 - 関数・モジュールモック編 (2022-07-03)
  5. ORマッパーのTypeORMをTypeScriptで使う (2022-07-27)
  6. 第1回 OpenAPI Generator を使ったコード生成 (2022-06-04)
  7. 直感が理性に大反抗!「モンティ・ホール問題」 (2022-07-04)
  8. Rust によるデスクトップアプリケーションフレームワーク Tauri (2022-03-06)
  9. 箱ひげ図で外れ値を確認する (2022-05-18)
  10. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する (2022-09-25)