Docker Hub完全ガイド|パブリック/プライベートリポジトリと自動ビルド
ここまで docker pull nginx や docker pull postgres:16 で公式イメージを取得してきました。その取得先が Docker Hub——世界最大のコンテナイメージレジストリです。第7章ではレジストリの世界に入り、自分のイメージをpush して他人と共有する方法を学びます。
💡 この記事のゴール
① Docker Hub のアカウント作成〜自分のイメージを push するまで
② イメージの階層(公式 / Verified / コミュニティ)を理解
③ パブリック vs プライベートリポジトリ
④ GitHub 連携の自動ビルド
⑤ 無料プランの制約(Pull Rate Limit)
① Docker Hub のアカウント作成〜自分のイメージを push するまで
② イメージの階層(公式 / Verified / コミュニティ)を理解
③ パブリック vs プライベートリポジトリ
④ GitHub 連携の自動ビルド
⑤ 無料プランの制約(Pull Rate Limit)
目次
- レジストリとは
- Docker Hub のイメージ階層
- アカウント作成と login
- 自分のイメージを push する
- パブリック vs プライベートリポジトリ
- GitHub 連携の自動ビルド
- 無料プランの Pull Rate Limit
- まとめ
1. レジストリとは
レジストリは「コンテナイメージの置き場・配布所」。Git で言うなら GitHub に相当する存在です。
【Git vs Docker レジストリの対応関係】
| コード管理 | コンテナイメージ管理 |
|---|---|
| GitHub(サーバ) | Docker Hub(サーバ) |
| リポジトリ(例:user/repo) | イメージリポジトリ(例:user/myapp) |
| コミット | タグ(myapp:v1.0) |
| git push / pull | docker push / pull |
Docker Hub は Docker社が運営するパブリックレジストリの代表。他にも:
- GitHub Container Registry(
ghcr.io) - Amazon ECR(
*.dkr.ecr.region.amazonaws.com) - Google Artifact Registry(
*-docker.pkg.dev) - Harbor(自前ホスト型)
などが存在します(比較は 7-5 で)。
2. Docker Hub のイメージ階層
| 種別 | 表記例 | 特徴 |
|---|---|---|
| 公式イメージ (Docker Official Images) |
nginx, postgres, python |
Docker社とアップストリームが管理、セキュリティ監査あり。名前空間なし(単一名前でプル可能) |
| Verified Publisher | bitnami/wordpress, hashicorp/vault |
企業が公式に配布しているイメージ。バッジ付き |
| Sponsored OSS | 多数 | OSS プロジェクトが無料で公開できる |
| コミュニティ | <username>/<image> |
一般ユーザーが公開したイメージ |
⚠️ コミュニティイメージは慎重に
誰でも好きな名前で公開できるので、中身が何か・メンテナンスされているかはイメージごとに要確認。本番ではできるだけ公式 or Verified Publisherを使いましょう。
誰でも好きな名前で公開できるので、中身が何か・メンテナンスされているかはイメージごとに要確認。本番ではできるだけ公式 or Verified Publisherを使いましょう。
3. アカウント作成と login
3-1. アカウント作成
- hub.docker.com/signup でサインアップ
- メール認証を済ませる
- Docker ID(= ユーザー名)が決まる。これがイメージ名の名前空間になる
3-2. CLI から login
$ docker login
Username: yourid
Password: ********
Login Succeeded
# 認証情報はここに保存される
# ~/.docker/config.json
⚠️ パスワードではなく Personal Access Token 推奨
2024年以降、Docker Hub でもPersonal Access Token(PAT)の使用が推奨されています。
アカウント設定 → Security → Access Tokens で作成。CI/CD・複数マシンで使い分けやすく、必要なスコープだけ与えられ、いつでも無効化できるので安全です。
2024年以降、Docker Hub でもPersonal Access Token(PAT)の使用が推奨されています。
アカウント設定 → Security → Access Tokens で作成。CI/CD・複数マシンで使い分けやすく、必要なスコープだけ与えられ、いつでも無効化できるので安全です。
4. 自分のイメージを push する
4-1. イメージを作る
# Dockerfile
FROM nginx:1.27
COPY index.html /usr/share/nginx/html/index.html
$ docker build -t myid/my-nginx:1.0 .
4-2. タグの命名規則
Docker Hub に push できるイメージ名は <Docker ID>/<repo>:<tag> という形式です。
| 部分 | 例 |
|---|---|
| Docker ID(= 名前空間) | myid |
| リポジトリ名 | my-nginx |
| タグ | 1.0(省略時は latest) |
4-3. push
$ docker push myid/my-nginx:1.0
The push refers to repository [docker.io/myid/my-nginx]
abc123: Pushed
def456: Layer already exists
1.0: digest: sha256:... size: 1234
4-4. 他のPCから pull して動作確認
$ docker pull myid/my-nginx:1.0
$ docker run -d -p 8080:80 myid/my-nginx:1.0
# → ブラウザで http://localhost:8080 → 自作のindex.htmlが出る
✅ これで世界配布完了
同じイメージ名を他の人が
同じイメージ名を他の人が
docker pull myid/my-nginx:1.0 で取得できます。Docker Hub アカウントさえあれば自分専用のイメージを世界中に配布できる、というのがレジストリの力です。
5. パブリック vs プライベートリポジトリ
| 項目 | パブリック | プライベート |
|---|---|---|
| アクセス | 誰でも pull 可 | ログインした許可ユーザーのみ |
| 検索 | Hub の検索にヒット | ヒットしない |
| 無料プランでの数 | 無制限 | 1個のみ |
| Team/Pro プラン | 無制限 | 無制限 |
| 主な用途 | OSS・公開したいツール | 社内アプリ・ビジネスコード |
プライベートリポジトリの作成
- Docker Hub ウェブで「Create Repository」
- Visibility で Private を選択
- 通常通り
docker pushで push - pull する側は
docker login必須
⚠️ 機密ファイルを含めない
Private リポジトリでも、イメージ作成時に紛れ込んだ機密情報(
Private リポジトリでも、イメージ作成時に紛れ込んだ機密情報(
.env, SSH鍵, API鍵)はイメージレイヤーに残り続けます。.dockerignore(3-4)と Multi-stage Build(3-3)で組み込まないことが根本対策。
6. GitHub 連携の自動ビルド
Docker Hub は GitHub/Bitbucket と連携して、push したらイメージを自動でビルド→Hub に自動公開する仕組みを提供します(Build plan 以上の有料機能)。
- Hub 上で「Automated Build」を有効化
- GitHub リポジトリを接続
- ビルドルールを設定(どのブランチ・タグをどんなイメージタグでビルドするか)
💡 無料で同等の自動化なら GitHub Actions
無料プランではこの機能は使えません。代替として、GitHub Actions でビルド → docker/build-push-action で Hub に pushする方が柔軟で費用もかからないため、実務ではこちらが主流になっています(第12章 CI/CD で詳しく)。
無料プランではこの機能は使えません。代替として、GitHub Actions でビルド → docker/build-push-action で Hub に pushする方が柔軟で費用もかからないため、実務ではこちらが主流になっています(第12章 CI/CD で詳しく)。
7. 無料プランの Pull Rate Limit
Docker Hub は無料プランで pull 回数が制限されています(2020年11月から)。知らないと本番やCIで突然エラーになります。
| プラン | 制限(6時間あたり) |
|---|---|
| 匿名(未ログイン) | 100 pull/IPあたり |
| 無料アカウント(ログイン) | 200 pull |
| Pro / Team / Business | 無制限 |
⚠️ CI で出るエラー
・CI で
・イメージを自前のキャッシュ/レジストリで運用(7-3 プライベートレジストリ)
・有料プランに切り替え
・AWS ECR Public / GHCR など別レジストリに移す(7-5)
toomanyrequests: You have reached your pull rate limit. が出たら、レート制限。対処:・CI で
docker login する(ログインすれば枠が増える)・イメージを自前のキャッシュ/レジストリで運用(7-3 プライベートレジストリ)
・有料プランに切り替え
・AWS ECR Public / GHCR など別レジストリに移す(7-5)
8. まとめ
| 押さえどころ | 内容 |
|---|---|
| レジストリ | イメージの配布所。Docker Hub は最大のパブリックレジストリ |
| イメージ階層 | 公式 / Verified / コミュニティ、公式ほど信頼度が高い |
| login | パスワードより Personal Access Token 推奨 |
| タグ命名 | <DockerID>/<repo>:<tag> |
| Public vs Private | 無料プランでは Private 1個まで |
| Rate Limit | 匿名 100/6h、ログイン 200/6h、CIでは login 推奨 |
| 自動ビルド | Hub機能は有料、実務は GitHub Actions |
参考リンク
- Docker Hub — レジストリ本家。
- Docker Hub 公式ドキュメント — アカウント・課金・自動ビルド等の一次情報源。
- Pull rate limit(公式) — レート制限の仕様と回避法。



コメント