環境
やりたいこと
limaを使うとアーキテクチャの壁を超えて仮想マシンを構築できるが、デフォルトではホストOS側とネットワークの共有されていないため、
Macからネットワーク経由でアクセスすることはできない。
それをいなんとかしたい
昔は自分で結構しなきゃいけなかったようだが、最近のlimaではVirtualBoxみたいに簡単に共有設定が出来る。
やり方
実は公式ドキュメントに詳しく載ってる
github.com
まずvde-2とlima-vm/vde_vmnetってのをビルドインストールしなきゃいけない
必要なビルドツールをインストール
brew install autoconf automake
vde-2を適当にダウンロードして解凍
ビルドに必要なファイル生成
autoreconf --install
./configure が生成されるので実行
./configure
ビルド
make
sudo make install
lima-vm/vde_vmnet も同様にダウンロードしてインストール
sudo make PREFIX=/opt/vde install
ホスト(MacOS)側のルーティングをlimaが弄る必要もあるのでsudoなしで実行できるようにする
limactl sudoers | sudo tee /etc/sudoers.d/lima
設定方法
デフォルトだと limaのVMの設定は ~/.lima/<インスタンス名>/lima.yaml
に格納される。(例えば lima start docker.ymlなら ~/.lima/docker/lima.yaml
)
そこに設定を足して limactl stop <インスタンス名>
limactl start <インスタンス名>
すればおk
limaのネットワーク設定種類
いくつかある
shared
networks:
- lima: shared
ホストとlimaの仮想VM同士共通のネットワークを作成し共有する方法。例ではlima0が作成されて 102.168.105.2 でアクセス可能
3: lima0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:55:55:76:5b:27 brd ff:ff:ff:ff:ff:ff
inet 192.168.105.2/24 metric 100 brd 192.168.105.255 scope global dynamic lima0
valid_lft 83948sec preferred_lft 83948sec
inet6 fd17:fb46:3fa2:c696:5055:55ff:fe76:5b27/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2591982sec preferred_lft 604782sec
inet6 fe80::5055:55ff:fe76:5b27/64 scope link
valid_lft forever preferred_lft forever
host
networks:
- lima: host
sharedと似てるが、仮想VM内同士の共有も可能な点が異なる。同様にlima0が作成されて 192.168.106.2
でアクセス可能。
3: lima0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:55:55:76:5b:27 brd ff:ff:ff:ff:ff:ff
inet 192.168.106.2/24 metric 100 brd 192.168.106.255 scope global dynamic lima0
valid_lft 86194sec preferred_lft 86194sec
inet6 fe80::5055:55ff:fe76:5b27/64 scope link
valid_lft forever preferred_lft forever
bridged
networks:
- lima: bridged
ホストと同じIPをlimaの仮想VMも持つ。ので例えばlimaの仮想VM内で python -m http.server -p 8000
すれば 192.168.1.117:8000
または localhost:8000
でアクセス可能
3: lima0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:55:55:76:5b:27 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.117/24 metric 100 brd 192.168.1.255 scope global dynamic lima0
valid_lft 259031sec preferred_lft 259031sec
inet6 fe80::5055:55ff:fe76:5b27/64 scope link
valid_lft forever preferred_lft forever
ネットワーク自体の設定はどこ?
~/.lima/_config/networks.yaml に定義されている
デフォルトだとこんな感じ
paths:
vdeSwitch: /opt/vde/bin/vde_switch
vdeVMNet: /opt/vde/bin/vde_vmnet
varRun: /private/var/run/lima
sudoers: /private/etc/sudoers.d/lima
group: everyone
networks:
shared:
mode: shared
gateway: 192.168.105.1
dhcpEnd: 192.168.105.254
netmask: 255.255.255.0
bridged:
mode: bridged
interface: en0
host:
mode: host
gateway: 192.168.106.1
dhcpEnd: 192.168.106.254
netmask: 255.255.255.0