JFrog ArtifactoryからDocker Hubを利用してダウンロードの制限を回避

 Docker Download Limits

コンテナイメージの取得時の制限について、Dockerの発表をご存知かも知れません。11月1日からDockerは利用するサブスクリプションに応じてDocker Hubの利用を制限し、制限を超えたPullリクエストがブロックされます。それだけでなく、無料アカウントの場合は非アクティブなイメージを6ヶ月間だけ保持するポリシーを導入しました(当初は11月1日の予定でしたがコミュニティからのフィードバックを受けて、このポリシーは2021年半ばに延期されました)。これらの新しい制限は、世界中のDockerコンテナイメージがどのように消費されているかに大きな影響を与えるでしょう。

Dockerはオープンソースのイニシアチブとしての例を示し、オープンソースコミュニティに新しいレベルのデプロイツールと方法論を提供しています。それに間違いはありません。新しい制限は個々の開発者に深刻な影響を与えるのではなく、むしろ中規模から大規模な開発チームに新たな課題をもたらすでしょう。チームの規模が大きくなればなるほど、その影響は大きくなります。そして、これは始まりに過ぎないかもしれません。今後、Docker Hubの使用方法に影響を与える新しいポリシーが発表されるかもしれません。

良いニュースとしては組織の開発パイプラインに影響を与えないようにDockerイメージを管理するための多くのツールが用意されていることです。JFrog ArtifactoryはDockerがレジストリ機能をリリースする前からDockerレジストリとして機能しており、最も人気のあるツールの1つです。Artifactoryを使用すればDocker Hubへの依存を減らしながら、独自のプライベートなDockerコンテナレジストリでコンテナイメージを管理し続けることができます。

Dockerが発表したこの2つの制限が何を意味しているかを確認してみましょう。

Dockerの新しいイメージ保持ポリシー

これまではDockerイメージをDocker Hubに無期限で保存することができました。その結果、開発者はあまり気にせずにこのストレージを利用していました。2021年半ばに適用される新しいイメージの保持ポリシーは新しいDockerのサブスクリプションに応じて適用されます。例えば無料アカウントで保存しているイメージは6ヶ月間利用されていないと削除されます。

Dockerの新しいダウンロード制限

Dockerは11月1日から無料アカウントのデータ転送に新たな制限を設け、匿名ユーザーの場合は100イメージまでの取得、認証済み/無料ユーザーの場合は6時間毎に認証済み/無料ユーザー、IPアドレスまたはユーザー毎に200イメージまでの取得が可能となります。6時間ごとに200イメージの単純な計算では1分間に約0.55イメージになります。これでは十分ではないかもしれませんし、制限に達すると次の6時間待たなければならなくなります。またレイヤーをダウンロードしていなくても、すでに持っているイメージを取得してもカウントされます。この制限は小規模なIPレンジ(企業のVPNが原因の場合もあります)の企業にとっては特に問題だと考えられます。

ArtifactoryでDockerイメージを保存して保護

DockerのレジストリとしてArtifactoryを使用することでイメージの期限切れや削除を心配することなく、無期限にDockerイメージを保存することができます。Artifactoryを使用することでイメージをキャッシュし、チームに最適なものに応じてレジストリと保持ポリシーを管理することができます(ベストプラクティスとして継続的に必要なイメージだけを維持して保存することを目標にしてください。 これはDocker Hubのダウンロード制限を最適化します)。Artifactoryを利用する場合、ストレージが枯渇する心配もありません。チェックサムベースのストレージを使用することでArtifactoryはストレージを最大限に活用します。

 

Docker HubへのPull数を減らす

また、Docker HubをプロキシするリモートリポジトリとしてArtifactoryを使用することでDocker HubへのPullリクエスト数を減らすことができます。ArtifactoryはDocker Hubから必要なイメージを一度だけリクエストし、Docker Hubを利用せずにArtifactoryだけで社内のすべてのチームがそれらのイメージを利用できるようになります。ArtifactoryではDockerアカウントを使用してDocker Hubの認証を行うことができるため、すべてのリクエストが認証され、アカウントタイプに基づいてカウントされます。

さらに、Artifactoryのバージョン6.237.10以上でリモートリポジトリのプロキシを利用する場合、Docker Hubからの取得は内部キャッシュをより良く利用するために新しいクエリを効率的に使用するようになりました。これは新しいGETリクエストを送信(これはDockerによってPullとみなされ、新しい制限によりカウントされます)する前に、Artifactoryはマニフェストファイルを比較するためにHEADリクエストを送信し、必要なときにのみキャッシュされたマニフェストを更新することを意味します。ArtifactoryはDockerから一度イメージを取得し、組織全体でイメージを利用できるようにして、Pullの制限を回避します。常にキャッシュを制御して、Docker Hubの利用を削減することができます。

Dockerレジストリを超えて: Dockerイメージの安全な配布

これでイメージが常に利用可能となり、Dockerの制約によって利用の制限がなくなるため、コンテナのライフサイクルに取り組むことができます。

企業がDockerイメージについてもつ、最も重要な懸念事項の1つは標準ツールでは見えない複雑なレイヤーで構成された、コンテナ内に複数のコンテナが存在するという「ロシア人形」の問題です。JFrog Xrayによるコンテナの再帰スキャンを使用するとArtifactoryに格納されているレイヤーが確認可能となり、本番移行前に脆弱性を特定できます。Dockerだけでなく、このセキュリティスキャン機能はほとんどの一般的なパッケージタイプですぐに利用できます。

JFrog Platformにはソフトウェアを安全かつ迅速に配布するための複数のツールも含まれています。ピアツーピア機能により、JFrogは数百のノードやクラスタへのコンテナイメージ(多くの場合、数GB)の膨大なダウンロードを処理することができます。これにより、レイテンシと個々のリポジトリへのアクセスの両方が軽減されます。JFrog Distributionを使用すると、コンテナを含むセキュアなRelease Bundleを作成して配信し、エアギャップ環境でもソフトウェアのアップデートを検証することができます。

JFrog PlatformはDockerによる更に変更される可能性のあるリスクを修正するだけでなく、コンテナデプロイのライフサイクル全体を管理するためのDockerレジストリ機能を超えるツールを提供します。

すでにJFrogユーザーですか?ArtifactoryをDockerレジストリとして使用する方法についてはこちらをご覧ください

JFrogユーザーではありませんか?JFrog Platformをクラウドで無料体験してみませんか。