ちりもつもればミルキーウェイ

好奇心に可処分時間が奪われる

limaつかってdocker環境作るぞ

はじめに

あたらしいPCセットアップしてて、せっかくなのでdocker-cli + limaとかでdocker環境整理しようかなーと思い立ちやってみた。
まだガッツリ使い込んでないのでこれから問題でるかもだけど、現状いい感じに利用できているます。

lima is 何

これ

github.com

Linux VMをよしなにするやーつですね。
ファイル共有とかポートフォワードをいい感じにしつつ、標準でcontainerd, nerdctlを装備したVM作ってくれる。
nerdctlはdocker互換なので入れとけばシュッといい感じよ、という雰囲気のよう

ちょっと触ってみた感じだと、cliからVM管理できるしサクッとVMたてれるしで結構体験よかったです。あとnerdctlがmulti-platformサポートしてる( qemu依存ぽい )のでそのノリでx86-64 on Armとかは普通にできるようす。

docker単体だとホストのCPUアーキと同じイメージしか使えないけど、limaでnerdctlつかえば別アーキのイメージ動かせるよ〜というかんじやな。

ファイルシステムがきになったので このへん みると現時点でlatestのv0.13.0だとsshfsっぽい。このへんあんまり詳しくないが 最近のdocker-for-macだとvirtiofsがつかえるっぽいし ファイルシステム起因のパフォーマンスについてはdocker-for-macのほうがいいんじゃないかな〜

まあものは試しということでやっていこう

構成

実際lima使うと、containerd入ってるから適当につくったubuntuとかですぐコンテナ管理はじめれるっちゃはじめれる!
んだけどhostからdockerコマンドをヌっと使いたいこともあるので、limaでVMたてて、基本はそこのdocker.sockにdocker-cliの向き先かえてくぞ!みたいな感じでつかってみる。

VM接触りたいときは入ればよろしい!みたいな感じを想定。

やっていく

lima側がいろいろ進捗してて、過去にチラっと見たときよりめっちゃわかりやすくなってた。
基本は https://github.com/lima-vm/lima 参考に進めばよい。僕は以下の手順で実施した

docker-cliインストール

ふつうにdocker-for-macいれると全部のせだけど、実はここ からdocker-cli単体でインストールできる。
(ちなみにリンクはM1 Macむけだけど、他のアーキのやつももちろんダウンロードできます)

limaインストール

homebrewでいれれるのでシュッといれよう

$ brew install lima

limaでdocker用のVM構築

まずはdocker deamonとかやるVMつくります。

nerdctlじゃなくてdocker使いたい人向けのテンプレが limaに同梱されてる ので、ありがたくそちらを使ってVM立てちゃいましょう

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

? Creating an instance "default" Proceed with the current configuration
~
To run `docker` on the host (assumes docker-cli is installed), run the following commands:
------
docker context create lima-default --docker "host=unix:///Users/convto/.lima/default/sock/docker.sock"
docker context use lima-default
docker run hello-world
------

ホストのdocker-cliからVMのsockを指定

さてdocker.sockの位置とかが出力されたので、素直にそのままホストでうつ

$ docker context create lima-default --docker "host=unix:///Users/convto/.lima/default/sock/docker.sock"
$ docker context use lima-default

ここまでやるとホストからdockerコマンドうってlimaのdocker deamon経由でlima VMでdocker動かしてもらえるぞい
(適宜ホストやVMでdocker loginとかはいい感じにやってちょ)

$  docker run -it alpine
/ # uname -a
Linux 21f5a1ccb085 5.15.0-52-generic #58-Ubuntu SMP Thu Oct 13 08:04:57 UTC 2022 aarch64 Linux

感想

よさそうだった!
とりあえずlima自身がVM管理ツールとしてかなり手触りがいいのでこれからも色々試したい気持ちになったぞ〜
M1 Macから別アーキのイメージうごかしたいことたま〜〜〜〜にあるので、それもサクッとできそうで非常に良さそうじゃった。

あと今回はdocker目的だったのでそれ用のテンプレを使ったけど、普段の作業用のVM立てて引きこもる!みたいなのもhostが汚れなくて悪くない気がするのでそういう使い道もこれから検討するやもしれぬ。 VM何個か立てっぱにしたい〜という気持ちが湧いてきたので、もっとメモリ盛ったPCにしとけばよかった。