見出し画像

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を使うときも、この関係を理解しておけば「どこに何を保存するのか」がスムーズになりますね。

いいなと思ったら応援しよう!