Docker Hub とは?デフォルトのパブリックレジストリ
Docker Hub は Docker がデフォルトで pull するレジストリです - 公式イメージ、コミュニティイメージ、そしてあなた自身のパブリックまたはプライベートなリポジトリの本拠地です。
レジストリを指定せずに docker pull ubuntu を実行すると、Docker は Docker Hub から取得します。これは最大のパブリックなコンテナイメージのカタログであり、非修飾名の docker push のデフォルトの宛先です。CI にとっては、そのレート制限と pull するイメージの信頼レベルの両方が重要です。
公式イメージとコミュニティイメージ
公式イメージ(ubuntu、node、postgres)は Docker の関与のもとで管理・保守されています。コミュニティイメージは username の下に存在します(someuser/app)。公式イメージがより安全なデフォルトです。コミュニティイメージに依存する前には吟味しましょう。
暗黙のデフォルト
redis:7 のような非修飾の参照は docker.io/library/redis:7 に展開されます。その利便性は同時に落とし穴でもあります - 意外な事態を避けるため、本番や CI ではレジストリを明示しましょう。
レート制限
Docker Hub は匿名および無料枠の pull を時間枠ごとに制限します。頻繁に pull する CI フリートは 429 Too Many Requests に達し、不安定な失敗を引き起こすことがあります。認証やイメージのミラーリングがこれを軽減します。
CI における緩和策
- pull を認証して上限を引き上げる。
- ベースイメージを runner のより近くにミラーまたはキャッシュする。
- pull が予測可能になるよう、タグと digest を pin する。
Docker Hub とマネージド runner
レート制限と一時的な pull エラーは CI の不安定さの典型的な原因です。マネージド runner(Latchkey)は一般的なベースイメージをキャッシュし、レジストリの不調を自動でリトライするため、Docker Hub のしゃっくりが build を失敗させることはありません。
重要なポイント
- Docker Hub は非修飾のイメージ名に対するデフォルトのレジストリです。
- 公式イメージを優先し、コミュニティのものは吟味しましょう。
- pull のレート制限は CI の不安定さを引き起こします - 認証、キャッシュ、またはミラーを。