水曜日, 6月 11, 2025
- Advertisment -
ホームニューステックニュースWWDC25 で出てきた Containerization Framework を試す

WWDC25 で出てきた Containerization Framework を試す


Containerization Framework は Apple の OSS で提供される Mac 上で直接 Linux コンテナイメージの作成、ダウンロード、実行ができる API およびツールです。

キーノートでは一切触れられなかったけど、Newsroom の記事にこっそり載っており、Inductor さんのツイートで気づきました。

https://www.apple.com/newsroom/2025/06/apple-supercharges-its-tools-and-technologies-for-developers/

Containerization Framework
The Containerization framework enables developers to create, download, or run Linux container images directly on Mac. It’s built on an open-source framework optimized for Apple silicon and provides secure isolation between container images.

主なコードは以下の GitHub リポジトリで公開されています。

https://github.com/apple/containerization

https://github.com/apple/container

この記事では後者の container コマンドを利用してみます。

README 的にはリリースページからバイナリをダウンロードできるようになる予定らしいですが、現時点(2025/06/10)では以下の手順でインストールを行いました。

git clone --filter=blob:none https://github.com/apple/container
cd container
make
make install
container

OVERVIEW: A container platform for macOS

USAGE: container [--debug] subcommand>

OPTIONS:
  --debug                 Enable debug output [environment: CONTAINER_DEBUG]
  --version               Show the version.
  -h, --help              Show help information.

CONTAINER SUBCOMMANDS:
  create                  Create a new container
  delete, rm              Delete one or more containers
  exec                    Run a new command in a running container
  inspect                 Display information about one or more containers
  kill                    Kill one or more running containers
  list, ls                List containers
  logs                    Fetch container stdio or boot logs
  run                     Run a container
  start                   Start a container
  stop                    Stop one or more running containers

IMAGE SUBCOMMANDS:
  build                   Build an image from a Dockerfile
  images, image, i        Manage images
  registry, r             Manage registry configurations

SYSTEM SUBCOMMANDS:
  builder                 Manage an image builder instance
  system, s               Manage system components

container system start を実行するとコンテナの実行や作成ができるようになります。

Dockerfile からコンテナイメージの作成ができます。

container build . -t nginx

[+] Building 8.6s (4/4) FINISHED                                                                                                                                                           
 => [resolver] fetching image...docker.io/library/nginx                                                                                                                               0.0s
 => [internal] load .dockerignore                                                                                                                                                     0.0s
 => => transferring context: 2B                                                                                                                                                       0.0s
 => [linux/arm64/v8 1/1] FROM docker.io/library/nginx:latest@sha256:fb39280b7b9eba5727c884a3c7810002e69e8f961cc373b89c92f14961d903a0                                                  3.3s
 => => resolve docker.io/library/nginx:latest@sha256:fb39280b7b9eba5727c884a3c7810002e69e8f961cc373b89c92f14961d903a0                                                                 2.0s
 => => sha256:b16f1b16678093d11ecfece1004207a40f9bc1b7d9d1d16a070c1db552038818 28.07MB / 28.07MB                                                                                      0.9s
 => => sha256:5c242ffc14bb4ca8740c858cc9c1a3efdb2fdd16170bf1ecbb04c28bba4a4df3 629B / 629B                                                                                            0.2s
 => => sha256:c9a20772aff432be3d6f1d387ba4e04324ffc462018bbecac77da3b2777d6571 40.76MB / 40.76MB                                                                                      1.3s
 => => sha256:99f78d9a3fb110d051d699e1a03dac4de9c223e528eb3e123d5f6b36af64dc0d 1.40kB / 1.40kB                                                                                        0.5s
 => => sha256:bf2e7af999d2a5102cb712353946abf19b5477ae9b1b7b243b01ed7e37e23ec3 955B / 955B                                                                                            0.4s
 => => sha256:5cbad98902925c3029f8aab8dde441ff2fb39265909385453cb6fa545cba6b1e 405B / 405B                                                                                            0.2s
 => => sha256:4cf85f4d417b9405944634427415aaec4c52a312997fe9ab099b69fd7f5c8756 1.21kB / 1.21kB                                                                                        0.2s
 => exporting to oci image format                                                                                                                                                     1.8s
 => => exporting layers                                                                                                                                                               0.0s
 => => exporting manifest sha256:ddfc3f9b1de49b3459bcd82976efc6cefd4c6da848cc261265ece07441b04895                                                                                     0.0s
 => => exporting config sha256:356fe26062d80cafa5fc28a8a122ca8011bf1102bd1d5b0167cb2a5e39dad727                                                                                       0.0s
 => => exporting manifest list sha256:63382f07f7595568ba1425745cf88aab8337f33d0277be773f09e91ead958906                                                                                0.0s
 => => sending tarball                                                                                                                                                                0.5s
Successfully built nginx:latest                                             

cat Dockerfile

FROM nginx:stable

コンテナの実行は container run で行います。
オプションも基本的には Docker と同様みたいですね。

container run -ti --rm nginx

container ls を実行することでアドレスを確認できます。

container ls
ID                                    IMAGE                                               OS     ARCH   STATE    ADDR
buildkit                              ghcr.io/apple/container-builder-shim/builder:0.1.0  linux  arm64  running  192.168.64.2
bf5b2544-1ce6-4987-b72d-59a014425a4d  nginx:latest                                        linux  arm64  running  192.168.64.3

デフォルトでは 192.168.64.1/24 の範囲にアドレスが割り当てられて、上記の場合は 192.168.64.3 にアクセスすることで Nginx へのアクセスが確認できました。

より詳しい使い方や詳細についてはWWDCのビデオドキュメントを参照してください。

所感としては、ツール的には Docker など他のツールをすでに使っていれば乗り換えるほどではないですが、肝としてはコンテナごとに隔離される CPU/メモリリソースの管理と Swift で提供される API だと思うので、リソースを厳密に分離したい際や macOS のアプリで Linux コンテナを利用したいといった時には便利な気はします。



Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -