【Docker基礎】レジストリを作るには

 Docker を本格的に使う場面では、自社専用のプライベートレジストリを用意したり、Docker Hub にイメージをアップロードしてグローバルに公開したりするケースが出てきます。レジストリはイメージを配布するための仕組みであり、コンテナのバージョン管理やデプロイをよりスムーズにする重要な要素です。ここでは、プライベートレジストリの構築手順と、Docker Hub の活用について解説します。

1.プライベートレジストリを作る

  1. Dockerレジストリ用コンテナ(registry)
    ・Docker 公式が配布している registry イメージを使って、レジストリを簡単に立ち上げられる。
    ・ポートはデフォルトで 5000 番を使用
  2. 実行例docker run -d -p 5000:5000 registry
    ・これで localhost:5000 を入り口としたプライベートレジストリが起動
    ・使用する側のマシンでは、このレジストリに対してログインし、docker pulldocker push の対象を localhost:5000/イメージ名 と指定すればOK
  3. 使うメリット
    社内ネットワーク だけでイメージを安全にやり取り可能
    ・オンプレ環境や独自クラウドでの運用にマッチ
    ・ネットワークを外部に開放せずに済む。

2.Docker Hub を使う

  1. 登録は無料
    ・メールアドレスさえあればアカウントを作れる。
    ・有料プランと無料プランがあり、無料プランにはいくつかの制限(6か月使わないイメージの削除など)がある。
  2. リポジトリを作成してプライベート化
    ・作ったイメージを public(全世界に公開)か private(限定公開)にするかを選べる。
    ・Public なら docker push 後に自動的に世界中からアクセス可能
    ・Private は「Create a Repository」で設定し、特定メンバーだけが pull/push できるようにする。
  3. 注意点
    ・Docker Hub はサーバコストを抱えるため、不要なリポジトリを放置しないのがマナー
    ・無料プランではプライベートリポジトリは1つまでなど、制限がある。

3.レジストリをどのように使い分けるか

  1. プライベートレジストリ
    ・完全社内向けのイメージ配布
    ・インターネット非公開&高度なセキュリティを担保できる。
    ・ネットワークが閉じている環境でも運用可能
  2. Docker Hub
    ・世界的に認知度が高く、誰でもアクセスできる利便性
    ・オープンソースプロジェクトや外部コラボなど広く公開したいとき。
    ・有料プランならプライベートリポジトリを複数運用できる。
  3. 物理的コピー (docker save / docker load)
    ・ネットが使えない環境や、単発のイメージ配布に適している。
    大規模な継続運用にはあまり向かない。

4.プライベートレジストリとDocker Hubの比較

4.1 プライベートレジストリ

項目説明
運営者企業や個人
アクセス制御高度なアクセス制御が可能
セキュリティ内部ネットワーク内での利用に最適
コスト自社インフラを使用する場合、初期費用や維持費が発生
利用例社内開発環境、限定的なプロジェクト共有

4.2 Docker Hub

項目説明
運営者Docker社
アクセス制御公開・非公開リポジトリの選択が可能
セキュリティDocker社が管理するため、信頼性が高い
コスト無料プランと有料プランがあり、用途に応じて選択可能
利用例オープンソースプロジェクト、チーム間のイメージ共有

図:プライベートレジストリとDocker Hubの比較

プライベートレジストリ             Docker Hub
├── 高度なアクセス制御 ├── 公開・非公開リポジトリの選択
├── 自社インフラで運用 ├── Docker社が管理
├── セキュアな内部共有 ├── 世界中とのイメージ共有
└── 初期費用・維持費が発生 └── 無料プランと有料プランあり

まとめ

  • レジストリ = イメージ配布の仕組み。Docker Hub もその1つ。
  • プライベートレジストリ は社内ネットワークなど閉じた環境で安全にイメージ共有できる。
  • Docker Hub はグローバルなイメージ配布・共有に強力(無料プランもあるが制限に注意)
  • 必要に応じて 物理的コピープライベートレジストリ と組み合わせると柔軟性が高い。

 次の「7章」では、Docker Compose について解説していきます。複数のコンテナをまとめて管理できる Compose の使い方を学び、さらに効率的な開発・運用を目指しましょう。