質問: イメージを指定するdocker xxxのコマンドの説明として、Web上で見つかる情報では、リポジトリ名とイメージ名の2種類の表記が見当たります。`docker images`ではREPOSITORYと表記されているので、リポジトリ名が正式名称なのかなと思うのですが、両者が別の意味を持つこともあるのでしょうか? イメージを指定するのだからイメージ名、という方が直感的だとは思うのですが。 どうも`apt-get`等でいうリポジトリと、Dockerのリポジトリという用語が自分の中でマッチせずに混乱してしまいます。 Dockerのレジストリの方が、`apt-get`等のリポジトリのイメージに近いような。リポジトリとレジストリも両者を混同しているような記事を見かけます。 `man docker-images`では以下のような文があり、混乱のもとになっているような自覚が公式にもあるのでしょうか? ``` The title REPOSITORY for the first title may seem confusing. ``` 英語版のスタックオーバーフローでも恐らく似たような質問がありましたが、自分の英語力では解釈しきれず、日本語での回答がもらえらばと思います。
回答: Dockerのリポジトリには複数のイメージが登録でき、それらをタグで区別しています。 ......という風に区別しているようです。少なくとも、Docker Hub上のリポジトリについてのドキュメントを読む限りは。たとえばこのドキュメントには、 > > You can add multiple images to a repository, by adding a specific `:` to it (for example `docs/base:testing`). > > (拙訳) 適当な`:`をつけることで、リポジトリには複数のイメージが追加できます(例:`docs/base:testing`)。 > > > と書かれています。 更にややこしいことに、「Dockerイメージそのもの」と「イメージ名」は厳密には分けて考えられるべきです。 なぜかというと、各々のDockerイメージにはハッシュ値でIDが振られていますが、 `v1`と`latest`のタグを同時につけられることからも分かるように、 同じイメージに対して複数の異なるタグを付け、違う名前にすることができるからです。 また、レジストリはこれらとは階層が別のもので、サーバーサイドで動くDockerイメージの配布システムのことを指しています(参考)。