概要
- Container machine はMac上でシームレスに動作する 統合Linux環境 を提供
- 高速・軽量・永続的 な特性を持ち、標準OCIイメージに基づく
- ユーザー名・ホームディレクトリ自動共有 により、どこからでも簡単アクセス
- macOSのエディタやツール と連携し、編集とビルドを分離可能
- 複数ディストリビューション のテスト環境を迅速に構築
Container machineの特徴
- Mac上で 本物のLinux環境 を提供
- /sbin/init によるinit system起動、サービス登録やプロセス監督可能
- 標準OCIイメージを利用
- alpine, ubuntu, debian など様々なディストリビューションに対応
- ユーザー名・ホームディレクトリ を自動マッピング
- Macの $HOME が /Users/<username> としてLinux環境にマウント
- リポジトリ・dotfiles の共有
- macOSとLinux環境の両方で同じ設定・資産を利用
- macOSのエディタ・IDE とLinuxビルド環境の共存
- 編集はMac、ビルド・実行はLinuxで分業
- macOSネイティブツール との連携
- プロファイラ・スクリーンショット・GUIデバッガなどが同じファイルを参照
- Linuxサービスのテスト
- 例:systemctl start postgresqlで本番同様のサービス起動
使い方・コマンド例
- コンテナマシンの作成・起動
- container machine create alpine:latest --name dev
- container machine run -n dev whoami(ユーザー名確認)
- container machine run -n dev pwd(ホームディレクトリ確認)
- container machine run -n dev(対話型シェル起動)
- コマンド実行・デフォルト設定
- container machine run -n dev uname -a(コマンド一回実行)
- container machine set-default dev(デフォルト指定)
- container machine run(-n省略可能に)
- 管理コマンド
- container machine ls(一覧表示)
- container machine inspect dev(詳細情報表示)
- container machine stop dev(停止)
- container machine rm dev(削除・ストレージ含む)
- エイリアス:m ls, m runなども利用可能
設定変更・カスタマイズ
- CPU・メモリ・ホームマウントの変更
- container machine set -n dev cpus=4 memory=8G
- container machine stop dev
- container machine run -n dev -- nproc(反映確認)
- メモリはデフォルトでホストの半分
- ホームマウントはrw(デフォルト)、ro、noneから選択
独自イメージの利用
- 任意のLinuxイメージ (/sbin/init必須)をコンテナマシンに利用可能
- 例:Ubuntu 24.04 + systemd + 基本ツールのDockerfile
- イメージのビルド・作成手順
- container build -t local/ubuntu-machine:latest .
- container machine create local/ubuntu-machine:latest --name ubuntu
- 初回起動時のユーザー作成カスタマイズ
- /etc/machine/create-user.sh(実行可能スクリプト)を用意
- 初回起動時、root権限で一度だけ実行
- 環境変数:CONTAINER_GID, CONTAINER_HOME, CONTAINER_MACHINE_ID, CONTAINER_UID, CONTAINER_USER
Container machine活用のメリット
- 本番に近いLinux環境 での開発・テスト
- 複数ディストリビューション 間の迅速な切替・検証
- macOSとLinuxの資産・ツールのシームレスな統合
- 開発効率の大幅向上 とテスト環境の柔軟性