コンテナレジストリ こんてなれじすとり
DockerコンテナイメージKubernetesCI/CDDocker Hubプライベートレジストリ
コンテナレジストリについて教えて
簡単に言うとこんな感じ!
コンテナレジストリは、アプリの「設計図セット(コンテナイメージ)」を保管・配布するための倉庫だよ。スマホのApp Storeみたいなイメージで、開発者がアップロードした設計図を、サーバーがダウンロードして使う仕組みなんだ!
コンテナレジストリとは
コンテナレジストリとは、コンテナイメージ(アプリケーションの実行に必要なコードや設定をまとめたパッケージ)を保存・管理・配布するためのサービスまたはシステムのことです。コンテナ技術(特にDocker)を使う開発・運用において、イメージの置き場所として中心的な役割を担います。
開発チームがビルドしたイメージをレジストリにプッシュ(アップロード)し、本番サーバーやクラウドがそこからプル(ダウンロード)することで、「どの環境でも同じアプリが動く」という状態を実現します。Gitリポジトリがソースコードの保管庫であるように、コンテナレジストリはイメージの保管庫と考えるとわかりやすいでしょう。
システム発注・選定の観点では、セキュリティスキャン機能・アクセス制御・プライベート/パブリックの区別などがレジストリ選択の重要ポイントです。社内の機密コードを含むイメージを扱う場合は、パブリックレジストリではなくプライベートレジストリの利用が推奨されます。
コンテナレジストリの仕組みと構造
コンテナレジストリは「保管庫・棚・ラベル」の3階層で整理されています。
| 概念 | 説明 | 例 |
|---|---|---|
| レジストリ | イメージ全体の保管庫(サービス全体) | Docker Hub、Amazon ECR |
| リポジトリ | 1つのアプリに対応するイメージの棚 | mycompany/webapp |
| タグ | バージョンを示すラベル | v1.0、latest、2024-04 |
イメージの流れ(CI/CDとの連携)
実務ではCI/CDパイプライン(自動ビルド・デプロイの仕組み)と組み合わせて使われます。
開発者がコードをコミット
↓
CI/CDツール(GitHub Actions等)が自動ビルド
↓
コンテナイメージを生成
↓
レジストリにプッシュ(保存)
↓
Kubernetes等がプルして本番環境に展開
覚え方
「レジストリ=イメージのAmazon倉庫」 商品(イメージ)を倉庫(レジストリ)に入れておき、必要な人が注文(プル)して受け取るイメージです。
歴史と背景
- 2013年 — Docker社がDockerを公開し、コンテナイメージという概念が普及し始める
- 2013年 — Docker Hubがリリース。世界初の大規模パブリックコンテナレジストリとして登場
- 2014年 — GoogleがGoogle Container Registry(現: Artifact Registry)を公開。クラウドベンダーが独自レジストリを提供し始める
- 2015年 — OCI(Open Container Initiative)が設立され、イメージフォーマットと配布仕様の標準化が進む
- 2015年 — AWSがAmazon ECR(Elastic Container Registry)を提供開始
- 2017年 — Kubernetesがデファクトスタンダードに。レジストリとの連携が必須インフラとなる
- 2020年 — Docker Hubが無料プランの利用制限(プルレート制限)を導入し、プライベートレジストリへの移行が加速
- 2022年以降 — セキュリティスキャン・SBOMサポートなど、セキュリティ機能の強化が各サービスで進む
主要レジストリの比較
代表的なコンテナレジストリサービスを比較します。
| サービス名 | 提供元 | 特徴 | 向いているケース |
|---|---|---|---|
| Docker Hub | Docker社 | 公開イメージが豊富・デファクトスタンダード | 公開OSSの利用・検証環境 |
| Amazon ECR | AWS | AWSサービスとの親和性が高い | AWSでシステムを構築している場合 |
| Google Artifact Registry | GKE・Cloud Runと密連携 | Google Cloud利用環境 | |
| Azure Container Registry | Microsoft | Active Directory連携が強力 | Azure・Microsoft 365環境 |
| GitHub Container Registry | GitHub | GitHubのCI/CDと統合しやすい | GitHub Actionsを使う開発チーム |
| Harbor | OSS | 自社サーバーに構築可能 | セキュリティ要件が厳しい社内環境 |
パブリック vs プライベートレジストリの構造
関連する規格・RFC
| 規格・仕様 | 内容 |
|---|---|
| OCI Image Specification | コンテナイメージのフォーマット標準(Open Container Initiative策定) |
| OCI Distribution Specification | レジストリとのAPI通信仕様(プッシュ・プルの手順を定義) |
| OCI Runtime Specification | コンテナの実行環境に関する仕様(レジストリと連動) |
| RFC 7235 / RFC 6750 | HTTP認証の仕様(レジストリへのアクセス認証に利用) |
関連用語
- コンテナ — アプリとその実行環境をまとめてパッケージ化する技術
- Docker — コンテナを作成・実行するための代表的なツール
- コンテナイメージ — コンテナの設計図・テンプレートとなるファイル群
- Kubernetes — 多数のコンテナを自動管理するオーケストレーションツール
- CI/CD — コードのビルド・テスト・デプロイを自動化するパイプライン
- Docker Hub — 最大手のパブリックコンテナレジストリサービス