- 17 Feb 2022
- 1 Minute to read
- Print
- DarkLight
- PDF
Docker コネクタ
- Updated on 17 Feb 2022
- 1 Minute to read
- Print
- DarkLight
- PDF
ProGet は、Docker をパッケージのように扱えます。この記事では、ProGet のコネクタで、複数の Docker をひとつのフィード(リポジトリ)にまとめる方法を紹介します。
使い方
Docker コネクタは、Docker を ProGet のフィードに追加する機能です。ProGet では、Docker のフィードを「レジストリ」と呼んでいます。
これにより、例えば、コンテナの品質にもとづき、PrereleaseImages と ReleaseImages の2つのレジストリを作成できます。簡単にするために、ReleaseImages レジストリに保存されているすべてのイメージを ReleaseImages レジストリに表示する必要があります。 これを実現するために、PrereleaseImages から ReleaseImages へのコネクタを作成します。 Docker クライアントは、すべて PrereleaseImages レジストリに格納されているかのように、両方からイメージを透過的にプルできるようになります。
Docker Hub など、外部のレジストリ(ProGet以外)へのコネクタも作成できます。外部へのコネクタは、特定のベースイメージをホワイトリストに登録したり、ローカルのインフラストラクチャへキャッシュしたりするときに役立ちます。
技術的な詳細
Docker は主に連想メモリを使用しており、イメージやファイルシステムレイヤーがそれぞれ(内容をもとに生成された)独自のハッシュで識別されます。Docker イメージは別のコンテンツを指すためのマニフェスト(Docker はレイヤーや blob と呼ぶ)であるため、コネクタはコンテンツレベルで動作します。つまり、イメージのマニフェストがローカルの ProGet に蓄積されていても、コネクタを経由した別のリポジトリに蓄積されたレイヤーを指している場合があります。つまりコネクタが消去されたり、指し示しているレイヤーが外部のレジストリから削除されれば、マニフェストが存在しないレイヤーを指している状態になる可能性があります。
キャッシングが有効な状態でクライアントからコネクタイメージが要求されると、ProGet はイメージマニフェストとレイヤーの両方をキャッシュしようとします。
制約
Docker Hub やその他の外部レジストリの多くは、イメージを検索・検出 するAPI 機能を公開していないため、ProGet ウェブ UI を使用し、このような外部レジストリに蓄積されたイメージをコネクタを経由で、検索・検出することはできません。