
2026/02/23 3:50
**HNで話題に** *macOS 用ローカル優先型 Linux マイクロ VM*
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
改訂サマリー
shuru run コマンドは、コマンドを実行した後に終了する短命コンテナを起動し、永続的な状態を残さないようにします。デフォルトではこれらのコンテナ内でネットワーキングが無効になっているため、外部アドレス(ping -c1 8.8.8.8)への ping は「Operation not permitted」というエラーで失敗します。--allow-net を指定して実行時にネットワークアクセスを有効にすると、apk add のように外部接続が必要なタスクも実行できます。
--cpus、--memory、--disk-size などのフラグで実行ごとのリソース制限を設定できます。コンテナは free -m(RAM)や df -h(ディスクスペース)のようなコマンドでこれらの使用状況を報告します。
チェックポイントにより、稼働中のコンテナの状態をキャプチャできます(
shuru checkpoint create <name>)。例えば Node.js と npm をインストールした後に「myenv」という名前のチェックポイントが作成されました。これを復元すると(shuru run --from myenv)、“ready.” を出力する簡単な Node スクリプトが実行されます。もう一つのチェックポイント「py」は Python3 のインストール後に作られ、ポート転送(-p 8080:8000)と共に起動すると、ゲスト側ポート 8000 上で Python HTTP サーバーが起動し、ホスト側ポート 8080 にマップされます。このトラフィックは vsock を通じてチューニングされるため、ローカルポート転送には --allow-net フラグは必要ありません。
全体として、このワークフローは長時間実行するコンテナのオーバーヘッドなしに、開発者やチームに迅速で隔離された再現可能な環境を最小限のコマンドで提供します。
本文
シンプルなCLI
terminal$ shuru run -- echo "hello from the sandbox" hello from the sandbox $ shuru run -- cat /etc/os-release | head -1 NAME="Alpine Linux" # VMは起動し、実行し、終了します — 何も残りません。 $ shuru run -- ping -c1 8.8.8.8 ping: sendto: Operation not permitted $ shuru run --allow-net -- apk add python3 fetch https://dl-cdn.alpinelinux.org/... OK: 45 MiB in 28 packages $ shuru run --cpus 4 --memory 4096 -- free -m | head -2 total used free Mem: 4096 38 4002 $ shuru run --disk-size 2048 -- df -h / Filesystem Size Used Avail Use% Mounted on /dev/vda 2.0G 18M 1.9G 1% / $ shuru checkpoint create myenv --allow-net -- sh -c 'apk add nodejs npm' shuru: checkpoint 'myenv' saved $ shuru run --from myenv -- node -e 'console.log("ready")' ready # 任意のチェックポイントを即座に復元。ブランチして再利用。 $ shuru checkpoint create py --allow-net -- apk add python3 shuru: checkpoint 'py' saved $ shuru run --from py -p 8080:8000 -- python3 -m http.server 8000 shuru: forwarding 127.0.0.1:8080 -> guest:8000 $ curl http://127.0.0.1:8080/ <!DOCTYPE HTML>... # --allow-net は不要。vsock 経由でトンネル化されます。