![見出し画像](https://assets.st-note.com/production/uploads/images/166177263/rectangle_large_type_2_07cca53fe4ab347d40c3bae8cfdb97be.png?width=1200)
Registry と Repository の違いとは?
コンテナやソフトウェアの管理をしていると、必ず目にする「Registry(レジストリ)」と「Repository(リポジトリ)」という言葉。AWSのECR(Elastic Container Registry)やDocker Hubでもよく使われますが、「結局どう違うの?」と思ったことはありませんか? この記事では、この2つの違いや関係を整理していきます。
Registry(レジストリ)とは?
まず、Registryは「コンテナイメージやソフトウェアパッケージを保存・管理・配信する場所」のことです。ざっくり言うと、必要なものを「保管する大きな倉庫」のようなもの。ユーザーはこの倉庫にイメージをアップロード(push)したり、必要なときに取り出す(pull)ことができます。
Registryの代表例:
Docker Hub:世界中で使われるDocker公式のレジストリ
Amazon ECR:AWSのコンテナイメージ専用レジストリ
GitHub Container Registry:GitHubが提供するレジストリ機能
Repository(リポジトリ)とは?
次に、Repositoryは「Registry内にある特定のプロジェクトやイメージを保管する場所」です。もう少し具体的にいうと、アプリケーションごとやサービスごとに分けて「保管棚」を作るイメージです。そして、それぞれのイメージには「タグ(Tag)」と呼ばれるバージョンの情報が付けられ、きちんと整理されています。
Repositoryの例:
例えば、nginxやubuntuのように、プロジェクトごとに分けられた場所があります。
Registry と Repository の関係
RegistryとRepositoryの関係を図書館に例えると、とてもシンプルになります。
Registry:図書館全体。さまざまな本棚(Repository)を保管する大きな場所です。
Repository:図書館の中の「特定の本棚」。たとえば、nginxやubuntuといったカテゴリごとの棚です。
Tag:本棚に置かれた「本のバージョンや状態」。例えば「nginx:latest」や「ubuntu:20.04」のように整理されています。
この図書館のイメージをもう少し具体化すると以下のようになります。
Registry(図書館)
├── Repository 1(本棚: nginx)
│ ├── nginx:1.20.1(本のバージョン)
│ ├── nginx:latest
│ └── nginx:1.19
│
├── Repository 2(本棚: ubuntu)
│ ├── ubuntu:20.04
│ ├── ubuntu:18.04
│ └── ubuntu:latest
│
└── Repository 3(本棚: my-app)
├── my-app:dev
├── my-app:staging
└── my-app:production
Amazon ECR の場合
AWSのECR(Elastic Container Registry)では、この関係は以下のように整理されます。
Registry:ECRサービス全体
Repository:my-app-repoやbackend-service-repoなど、個別のイメージ保管場所
Tag:latestやv1.2.3などのバージョン情報
例えば、次のようなURLがECRのイメージです:
aws_account_id.dkr.ecr.region.amazonaws.com/my-app-repo:latest
aws_account_id.dkr.ecr.region.amazonaws.com → Registry(図書館)
my-app-repo → Repository(本棚)
latest → Tag(本のバージョン)
まとめ
Registryは、コンテナイメージ全体を保存・管理するサービスです。Docker HubやAmazon ECRがこの役割を担っています。一方で、Repositoryは特定のアプリケーションやサービスのイメージを保管する場所です。その中にはバージョンを示す「タグ」が付けられ、管理されています。
イメージとしては、Registryが図書館、Repositoryは本棚、そしてタグはバージョンごとの本というわけです。
AWS ECRやDocker Hubを使うときも、この関係を理解しておけば「どこに何を保存するのか」がスムーズになりますね。