2023/06/15

Windows コンテナー イメージから Foreign Layers が削除された(2023年6月のベース OS イメージから)

読んでも分かり難いですけど、Windows コンテナーのイメージのプッシュ/プルで使用される Foreign Layers の概念、これが 6 月のベース OS イメージから取り除かれたということらしい。

Announcing Removal of Foreign Layers from Windows Container Images
https://techcommunity.microsoft.com/t5/containers/announcing-removal-of-foreign-layers-from-windows-container/ba-p/3846833

2022年10月にEULA改訂されて、結合イメージの一部としてベース OS レイヤーの再配布が許可されたんですけど、それへの対応。

Announcing Windows Container Base Image Redistribution Rights Change
https://techcommunity.microsoft.com/t5/containers/announcing-windows-container-base-image-redistribution-rights/ba-p/3645201

これまでは Docker デーモンに --allow-nondistributable-artifacts を構成することで、ベース OS レイヤーをイメージに含めることができたそうです(以前は同一組織内での使用に限定でしたが、EULAの改訂で再配布もできるように)。

アナウンスを読んでもピンとこないかもしれないので、ちょっとデモでも。私もピンとこなかったので、やってみてやっと理解しました(たぶん)。

windows/nanoserver:ltsc2022の5月のイメージ(10.0.20348.1726)でコンテナーを作成してイメージをCommit、Docker Hub リポジトリにプッシュすると、Foreign Layer (ベースOSレイヤー)のプッシュがスキップされます。

2023年6月のイメージ(10.0.20348.1787)で作成したイメージをプッシュすると、すべてのレイヤーがプッシュされました。windows/servercore のイメージだと、巨大(ベースOSレイヤーだけで圧縮サイズで1.35GB)になるので、プッシュの時間とリポジトリのストレージ領域の消費が激増するので要注意。
 


これまでの外部レイヤーの参照を含むイメージをレジストリインターネットから隔離された環境(エアギャップな環境) でプルする場合、mcr.microsoft.com にアクセスできないとベースOSレイヤー部分をプルできないため失敗します。以下は、hosts ファイルで mcr.microsoft.com を偽のIPに名前解決させてます。

一方、2023年6月以降のベースOSイメージから作成されたイメージの場合、外部レイヤーの参照を含まず、ベース OS レイヤーがリポジトリに格納されているので、上と同じ環境でも問題なくプルできます。



 


0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。