7.1 Docker Hub完全ガイド|パブリック/プライベートリポジトリと自動ビルド

Dockerレジストリ・本番運用

Docker Hub完全ガイド|パブリック/プライベートリポジトリと自動ビルド

ここまで docker pull nginxdocker pull postgres:16 で公式イメージを取得してきました。その取得先が Docker Hub——世界最大のコンテナイメージレジストリです。第7章ではレジストリの世界に入り、自分のイメージをpush して他人と共有する方法を学びます。

💡 この記事のゴール
① Docker Hub のアカウント作成〜自分のイメージを push するまで
② イメージの階層(公式 / Verified / コミュニティ)を理解
③ パブリック vs プライベートリポジトリ
④ GitHub 連携の自動ビルド
⑤ 無料プランの制約(Pull Rate Limit)

目次

  1. レジストリとは
  2. Docker Hub のイメージ階層
  3. アカウント作成と login
  4. 自分のイメージを push する
  5. パブリック vs プライベートリポジトリ
  6. GitHub 連携の自動ビルド
  7. 無料プランの Pull Rate Limit
  8. まとめ

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を使いましょう。

3. アカウント作成と login

3-1. アカウント作成

  1. hub.docker.com/signup でサインアップ
  2. メール認証を済ませる
  3. 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・複数マシンで使い分けやすく、必要なスコープだけ与えられ、いつでも無効化できるので安全です。

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・公開したいツール 社内アプリ・ビジネスコード

プライベートリポジトリの作成

  1. Docker Hub ウェブで「Create Repository」
  2. Visibility で Private を選択
  3. 通常通り docker push で push
  4. pull する側は docker login 必須
⚠️ 機密ファイルを含めない
Private リポジトリでも、イメージ作成時に紛れ込んだ機密情報.env, SSH鍵, API鍵)はイメージレイヤーに残り続けます。.dockerignore(3-4)と Multi-stage Build(3-3)で組み込まないことが根本対策。

6. GitHub 連携の自動ビルド

Docker Hub は GitHub/Bitbucket と連携して、push したらイメージを自動でビルド→Hub に自動公開する仕組みを提供します(Build plan 以上の有料機能)。

  1. Hub 上で「Automated Build」を有効化
  2. GitHub リポジトリを接続
  3. ビルドルールを設定(どのブランチ・タグをどんなイメージタグでビルドするか)
💡 無料で同等の自動化なら GitHub Actions
無料プランではこの機能は使えません。代替として、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 で出るエラー
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
✅ 次のステップ
7-2 イメージのタグ戦略で、「:latest はなぜダメか」から始まり、semver・Git SHA など本番で安全に使えるタグ付け指針を整理します。

参考リンク


Dockerの基礎を動画で体系的に学びませんか?

実務で使う基礎だけを3時間に凝縮。環境構築から丁寧に解説しています。

Udemy Docker入門講座 クーポン割引で講座を見る →

コメント

タイトルとURLをコピーしました