
Docker Hub のレート制限変更に備える動きがありましたが、先月、最終的にその変更は保留となりました。それに伴い、多くの JFrog の顧客から「Docker Hub のレート制限が変更されたら、自社にはどのような影響があるのか?」という質問が寄せられました。本記事では、今後レート制限が導入された場合でも、Docker を継続して問題なく利用するために取れる対策について解説します。
Docker は現代のソフトウェア提供においてどのような役割を果たしているのか
コンテナー化は、今やソフトウェア開発における標準的な手法となっています。ベース イメージが基盤となる OS と一致していれば、アプリケーションをあらゆる環境にデプロイできるだけでなく、更新やスケーリングも効率的に行うことができます。
多くの人にとって「Docker = コンテナー」というイメージがあるほど、Docker や Docker Hub、そしてそれを取り巻くコンテナー エコシステムは、クラウドネイティブな現代のソフトウェア提供の要とされています。
Docker がモダンなコンテナー技術の基礎を築いただけでなく、Docker Hub は数百万にのぼるイメージを、パブリックおよびプライベート レジストリでホスティングしています。開発チームは、Docker Official イメージや Verified Publisher (認証済み提供者) によるイメージを、開発者自身や CI ツールを通じて日常的にダウンロードしています。
さらに、Docker は無償のオープンソース ツールに加え、コンテナー開発を支援する有償サービスも多数提供しています。
なぜコンテナー レジストリとして JFrog を使うのか
JFrog Platform は、中心にある JFrog Artifactory を通じて、数千の開発組織においてユニバーサルなアーティファクト管理とコンテナー レジストリの役割を果たしています。多くの開発チームが JFrog をプライベートなコンテナー レジストリとして利用する理由は、以下のような重要なメリットがあるからです。
- 上流のパブリック レジストリへのリクエストをプロキシし、アーティファクトをキャッシュすることで、重要な依存関係の可用性を確保できる。
- コンテナー、Helm チャート、そしてアプリケーションやそのデプロイに関わるすべてのパッケージ/ファイルを一元管理することで、ソフトウェア開発ライフサイクル (SDLC) 全体の可視化とコントロールを強化できる。
- 開発プロセスから本番環境で稼働するコンテナー イメージに至るまで、アプリケーションの完全なトレーサビリティを実現できる。
- イメージ レイヤーを基盤とした高度なコンテナー管理により、高速な転送やスキャンを可能にし、アプリケーション レイヤーの詳細な可視化を提供する。
- コンテナー内の脆弱性が存在するレイヤーを特定し、それが実際に影響するかどうかまで判断できる、文脈に基づいたセキュリティ情報を提供する。
- JFrog はハイブリッド クラウドやオンプレミス環境を含む、あらゆる環境に柔軟に導入できるため、アプリケーションの開発と提供をスピードアップできる。
Docker Hub のレート制限が DevOps チームに与える課題とは
開発ワークフローでは、Docker Hub への認証済み接続を利用するのがベストプラクティスとされています。しかし、多くの開発組織と同様に、一部のパイプラインが未認証ユーザーとして Docker Hub からイメージを取得しているケースもあるでしょう。
たとえ CI ソリューションに依存関係プロキシを使っていても、そのプロキシ自体が未認証で Docker Hub にアクセスしている可能性があります。また、そのプロキシにより Docker Hub への呼び出し回数はある程度削減されますが、開発者が latest
タグで頻繁にイメージを取得している場合、パイプラインはすぐにレート制限に達してしまうリスクがあります。さらに、Docker Hub へのアクセスがパブリック インターネット経由であることも、パイプラインのパフォーマンスに遅延を引き起こす要因となります。
JFrog は Docker の利用をどのようにスケーラブルに支援するのか
JFrog は、Docker がソフトウェア提供において果たす重要な役割を早くから理解しており、Docker と提携して技術の最大活用を支援してきました。JFrog は、レート制限による不確実性からユーザーを保護し、以下の 3 つの方法で安心してスケーラブルに利用できる環境を提供します。
- Docker Hub へのリクエストをプロキシ & キャッシュし、制限を回避
- 認証を有効にすることでレート制限を緩和または解除
- JFrog SaaS を通じた無制限のパブリック Docker Hub ダウンロード
Docker Hub のプロキシ キャッシュ
開発チームが JFrog を活用する代表的なケースのひとつが、パブリック レジストリのプロキシ利用です。JFrog は、リクエストされたパッケージを開発環境の近くでキャッシュし、開発者や CI システムに対して必要なときに必要な場所で配信します。JFrog を「プルスルー キャッシュ」として使うことで、Docker Hub へのユニークなリクエスト数を削減でき、IT リソースの最適化とパイプラインの高速化が可能になります。Docker が JFrog ユーザーにとって最も利用されているリポジトリ タイプのひとつであるのも納得です。
認証の有効化
JFrog Platform を通じて、Docker Hub へのアクセスを簡単に認証付きにすることができます。認証により、無料アカウントでも有料アカウントでも、レート制限を緩和または回避できるようになります。さらに、認証済みのアクセスによりセキュリティ、柔軟性、操作性も向上し、プライベート リポジトリからのイメージ取得も可能になります。まだ Docker Hub と JFrog の接続を認証していない場合は、ぜひ実施をお勧めします。
パブリック Docker Hub からの無制限ダウンロード
JFrog は Docker と提携し、JFrog Cloud サブスクライバーがパブリック Docker Hub からのダウンロードにおいて、未認証ユーザー向けのレート制限 (1 時間あたりの取得回数) を回避できるようにしています。ただし、この仕組みは JFrog のマネージド SaaS 経由でのリクエストに限定されます。この機能によりパイプラインの中断を回避できますが、長期的な解決策としては推奨されません。
自社ホスト型 JFrog ユーザーへの推奨事項
JFrog をオンプレミスで運用している場合は、Docker Hub のレート制限による影響を受ける可能性が高くなります。以下のベストプラクティスを参考に、パイプラインの見直しと最適化を進めてください。
- 開発環境、CI、本番環境すべてで依存関係を JFrog 経由で取得するよう統一する。
latest
タグではなく、バージョンを明示したイメージを使用するよう開発者に教育する。- ベース OS イメージを統一することでキャッシュ性能を向上させ、Docker Hub から取得するレイヤー数を削減する。
Docker 利用を安心して拡張するために
JFrog は、組織の規模を問わず、Docker の可能性を最大限に引き出す環境を提供します。まだ JFrog を利用していない方は、無料トライアルをぜひお試しください。
JFrog Platform に関するご質問は、JFrog 日本正規代理店のエクセルソフトまでお問い合わせください。
記事参照: Scaling Docker Usage with JFrog
世界の人気ソフトウェアを提供するエクセルソフトのメールニュース登録はこちらから。