あくまでも個人的な解釈です。
ご指摘などあればお願いします。
疑問
docker images
を叩くとDockerイメージの一覧が表示されるけど、なぜイメージの列名がREPOSITORY
なのか?
イメージとリポジトリは違うのか?
個人的な解釈
1. リポジトリとレジストリ
AWS ECRのRをリポジトリだと思い込んでいたので混乱。
レジストリは、コンテナイメージやリポジトリを格納・管理するところ(Docker Hub、AWS ECRなど)。
2. リポジトリとは
リポジトリは、名前は同じだがタグが異なるイメージの集合。
Gihubのリポジトリとタグをイメージするとわかりやすい。
3. イメージ名とは
イメージ名いうものがそもそもないのかもしれないが、あえて言うならばリポジトリ名 + タグ名がそれにあたりそう。
参考記事を見ると以下のようにあるので、タグの全表記がイメージ名ということになるのかも。
The full form of a tag is [REGISTRYHOST/][USERNAME/]NAME[:TAG]. For ubuntu above, REGISTRYHOST is inferred to be registry.hub.docker.com. So if you plan on storing your image called my-application in a registry at docker.example.com, you should tag that image docker.example.com/my-application.
あとは、レジストリ名とユーザー名がどちらも/
で区切られる、かつ省略ができるところがわかりづらかった。
Docker Hubの場合、それが公式だからなのか分からないがレジストリ名は省略され、ユーザー名をつけるように書かれている。
しかし、AWS ECRの場合、プライベートなレジストリになるため、レジストリ名は必要だが、ユーザー名は省略しても良い。
ここを理解していなかったので、AWS ECRのリポジトリ名を見たときに、レジストリ名の部分を、Docker Hubのリポジトリ名と同様にユーザー名と見てしまい、混乱した。
疑問の答え
docker images
を叩くとDockerイメージの一覧が表示されるけど、なぜイメージの列名がREPOSITORY
なのか?
1列目に表示されるものがイメージ名だと思っていたので混乱していた。
イメージは、リポジトリ、タグ、イメージIDなどの情報から構成されていると言えるので、イメージ一覧を取得した場にはそれらの情報が取得できる。
参考
- In Docker, what is the difference between an image and a repository? - Stack Overflow : http://stackoverflow.com/questions/31115098/in-docker-what-is-the-difference-between-an-image-and-a-repository
- Difference between Docker registry and repository - Stack Overflow : http://stackoverflow.com/questions/34004076/difference-between-docker-registry-and-repository