プロキシ経由で外部レジストリに到達できるマシンは、Skopeo でイメージを内部レジストリへコピーできます。コピーを実行する処理を設定します。

export HTTP_PROXY=http://proxy.example.net:8080
export HTTPS_PROXY=http://proxy.example.net:8080
export NO_PROXY=registry.internal.example

skopeo copy --all \
  docker://registry.public.example/team/image:stable \
  docker://registry.internal.example/team/image:stable

レジストリ名とイメージ参照は例です。ソースはプロキシを通り、内部レジストリはバイパス項目で照合されます。プロキシ資格情報を設定しない許可された公開ソースからのコピーでは、内部バイパスを維持したまま HTTP プロキシ一覧 から候補の HTTP エンドポイントを入手できます。その項目は、コマンドが実際に使う宛先ホスト名に合わせて調整してください。

docker:// はレジストリ参照のイメージトランスポート名です。コピーがローカルの Docker デーモンに委任されるという意味ではありません。Skopeo のレジストリ HTTP トランスポートは、組み込みアプリケーションが別のプロキシ URL を明示しない限り、環境からのプロキシ検出を使います。

--all は、ソース参照がマルチプラットフォームのイメージインデックスやマニフェストリストを選ぶときに重要です。参照されるすべてのイメージのコピーを要求します。この指定がない場合、コピーは完全なマルチプラットフォーム参照を再現せず、現在のプラットフォーム向けのイメージを選ぶことがあります。

コピー後、下流のマシンは内部レジストリのイメージ参照を使えます。それを取得できるかは、そのレジストリへの経路によります。コピーを実行した処理の環境を引き継ぐわけではありません。

関連記事