lima 紹介

| 2 min read
Author: 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 でも動いているので個人的には満足しています。