mcpField
A
apple-container

apple-container

github.com/sanjay3290クラウド・DevOps44776 回インストール7 週間前に更新
リポジトリ

apple-container について

apple-container は、Apple シリコン搭載 Mac で Apple のオープンソースコンテナツールを使うための CLI スキルです。VM で分離された OCI コンテナやイメージ操作、Docker との違いを解説します。

主な機能

  1. 01OCI コンテナの実行と管理
  2. 02Dockerfile からのイメージ構築
  3. 03レジストリへのイメージの送受信
  4. 04ボリュームとネットワークの管理
  5. 05CLI コマンドとワークフローの参照

活用シーン

  1. 01Apple シリコン搭載 Mac での Linux コンテナ実行
  2. 02OCI イメージの構築と公開
  3. 03永続化するコンテナデータの管理
  4. 04コマンド構文の確認とサービスのトラブル対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sanjay3290/ai-skills --skill apple-container

インストール後、Claude Code で/apple-containerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
commands.md
concepts.md
configuration.md
workflows.md

詳細

Apple container

Apple の container は、Apple シリコン搭載 Mac で OCI/Linux コンテナをビルド、実行、管理するためのオープンソースの CLI です。各コンテナは、Containerization フレームワークと Virtualization API を基盤とする独自の軽量仮想マシン内で動作するため、Docker のような共有デーモンはなく、サービスはユーザーごとに launchd 経由で実行されます。イメージは標準的な OCI アーティファクトなので、Docker レジストリやその他の OCI ツールと相互運用できます。CLI のコマンドは意図的に Docker に似せてあります(container run、container build、イメージ操作は container image push/pull など)が、別個のツールです。Docker のコマンドパス、フラグ、デフォルト、デーモンの動作がそのまま使えるとは想定しないでください(たとえば、トップレベルに container images/push/pull コマンドはありません。イメージ操作の動詞は container image の下にあります)。

要件

  • Apple シリコンのみ(M1 以降)。Intel Mac はサポートされていません。
  • macOS 26(Tahoe)が公式にサポートされる対象です。 メンテナーは旧バージョンの macOS をサポートしておらず、通常、26 で再現できない問題は修正しません。バイナリは**macOS 15(Sequoia)**でも動作しますが、ネットワーク機能は制限されます。利用できるのは単一のデフォルトサブネットのみで、container network グループと --network フラグはエラーになります。macOS 26 が必要な機能は、リファレンスファイル全体で明記されています。
  • バージョン: このスキルでは、機能が最も充実した 1.0.0 リリースを説明します。machine グループ、container cp、container export、container prune、container image prune、container registry list、container system version は 1.0.0 で追加されました(0.7.1 にはありません)。0.7.1 より後に追加された機能には、リファレンスファイルで (1.0.0+) と記載しています。インストール済みのビルドで利用できる機能を確認するには、container --version と container <group> --help を実行してください。
  • プロジェクトの GitHub リリース(apple/container)から署名済みの .pkg インストーラーをダウンロードして実行し、インストールします。要件と互換性の一覧、およびコンテナごとに VM を使用する仕組みの詳細は、references/concepts.md を参照してください。

セットアップ

署名済みパッケージをインストールしたら、バックグラウンドサービスを一度起動します。

  1. GitHub リリースページから、最新の署名済みインストーラー .pkg をダウンロードします。
  2. ダウンロードしたパッケージをダブルクリックして、表示される手順に従います。ファイルを /usr/local に配置できるよう、管理者パスワードを入力してください。(文書化された CLI の installer 呼び出し方法はありません。インストールには GUI パッケージを使用します。)
  3. サービスを起動し、正常に動作していることを確認します。
# Start the container services (container-apiserver + helpers via launchd). On first run it
# offers to install the default Linux kernel — accept it, or start non-interactively with
# `--disable-kernel-install` and add a kernel later via `container system kernel set`.
container system start

# Verify services are healthy
container system status

コンテナ/イメージ/ビルドのコマンドを実行するには、事前に container system start を実行しておく必要があります。接続/XPC エラーはほとんどの場合、サービスが停止していることを意味するため、再度実行してください。container system stop を実行すると、launchd サービスを停止して登録解除できます(使用できるオプションは -p/--prefix のみです)。container system start の起動フラグ(-a/--app-root、--install-root、--log-root、--enable-kernel-install/--disable-kernel-install、--timeout)については、references/configuration.md を参照してください。

アップグレード/ダウングレード/アンインストールには、/usr/local/bin にあるヘルパースクリプトを使用します(先に container system stop を実行してください)。update-container.sh(バージョンを固定するには -v <version> を追加)と、ユーザーデータを削除する場合は uninstall-container.sh -d、保持する場合は -k を使用します。手順の詳細は references/workflows.md を参照してください。

コマンドグループの概要

すべてのコマンドは container <group> <subcommand> の形式で実行します。コンテナーのライフサイクルに関する動詞(run、 create、start、stop、exec、logs、inspect、list/ls、delete/rm、kill、 stats)と build はトップレベルにあります。push、pull、tag などのイメージ操作は container image の下にあります。正確なフラグを確認するには container <group> --help を実行するか、 網羅的な一覧が記載された references/commands.md を参照してください。

グループ機能例
コンテナーのライフサイクルコンテナーの作成、起動、実行、停止、exec、検査、一覧表示、削除container run --rm -it docker.io/library/alpine sh
buildビルダー VM で Dockerfile から OCI イメージをビルドしますcontainer build -t myapp:latest .
imageローカルイメージの一覧表示、タグ付け、検査、削除、読み込み/保存、プルーニングを行います。レジストリへのプッシュ/プルも行いますcontainer image ls
registryOCI レジストリへの認証(ログイン/ログアウト/一覧表示)を行いますcontainer registry login ghcr.io
systemサービスの起動/停止/状態確認、ログ、ディスク使用量(df)、DNS、カーネル、プロパティを管理しますcontainer system status
networkコンテナーネットワークの作成/一覧表示/削除を行います(macOS 26 のみ)container network create mynet
volume永続ボリュームの作成/一覧表示/検査/削除を行いますcontainer volume create data
buildercontainer build を実行するビルダー VM を管理します(起動/停止/状態確認)container builder status
machine (1.0.0+)永続的な Linux「マシン」環境です(1.0.0 で追加)container machine --help

各グループの正確なサブコマンド名、エイリアス、引数、フラグは references/commands.md に記載されています。不慣れなコマンドを実行する前に参照し、Docker と同等の構文を 推測しないでください。

このスキルの使い方

タスクに合ったリファレンスファイルを読み、フラグや動作を推測しないでください。

  • references/commands.md — 網羅的な CLI リファレンスです。すべてのコマンドグループ、サブコマンド、 エイリアス、引数、フラグを記載しています。具体的な container ... コマンドを組み立てるときや、 使用する前にフラグが存在することを確認するときに参照してください。
  • references/concepts.md — アーキテクチャ(コンテナーごとの VM、Containerization フレームワーク)、 システム要件、macOS 15 と 26 の違い、ネットワークモデル、コンテナーごとの IP、セキュリティモデル、 Docker と container の比較について説明しています。仕組みや理由を説明するときや、Docker のメンタルモデルでは 正しい答えが得られない場合に参照してください。
  • references/configuration.md — システムサービス、config.toml/プロパティモデル、 デフォルトのカーネル、DNS ドメイン、デフォルトのレジストリ、ビルダーリソース、マシン設定について説明しています。 デフォルトの変更、CPU/メモリの調整、プライベートレジストリの指定、カーネルの管理を行うときに参照してください。
  • references/workflows.md — コピーして使えるタスク手順(イメージの実行、ビルドとプッシュ、 ローカル DNS の設定、ボリュームのマウント、ポートの公開)と、よくある問題のトラブルシューティングを記載しています。 ユーザーが具体的なエンドツーエンドのタスクを実行したい場合は、まずこちらを参照してください。

主なルール

  • これは Docker ではありません。 CLI は Docker に似ていますが、フラグ、デフォルト設定、デーモンの動作は異なります。Docker と同じだと決めつけず、references/commands.md で構文を確認してください。
  • 必ず最初にサービスが起動していることを確認してください。 コンテナー、イメージ、ビルドに関するコマンドを実行する前に、container system start を実行し、container system status で状態を確認してください。接続エラーは通常、サービスが停止していることを意味します。
  • イメージは標準的な OCI アーティファクトであり、Docker レジストリやほかの OCI ツールと相互運用できます。レジストリを省略したイメージ参照は、デフォルトで docker.io を使用します(registry.domain プロパティで変更できます。references/configuration.md を参照)。
  • 各コンテナーにはネットワーク上で個別の IP アドレスが割り当てられます(コンテナーごとに軽量 VM が 1 台)。共有 Docker ブリッジはありません。コンテナーには IP アドレスで直接アクセスするか、ローカル DNS ドメインを設定して(container system dns create ...、管理者権限が必要)、名前でアクセスしてください。
  • container network の使用には macOS 26 が必要です。 macOS 15 では単一のデフォルトサブネットのみ利用でき、ネットワークコマンドグループは使用できません。references/concepts.md を参照してください。
  • 正確さが重要な場合は、完全修飾イメージ参照(例:alpine だけでなく docker.io/library/alpine)を使用し、取得元レジストリの曖昧さを避けてください。

コメント