Docker Registryはサービスであり、自分でホストするか(TrustedおよびPrivate)、またはdocker hubをこのサービスのホストにすることができます。通常、ソフトウェアが商用の場合、これは「プライベートで信頼できる」レジストリとしてホストされます。Java開発者にとって、これはMaven Artifactoryのセットアップと多少似ています。
Dockerリポジトリは、「タグ付き」イメージのセットです。たとえば、5つのubuntu:latest
画像にタグを付けたとします。
a)Nanoエディター(image1_tag:v1)
b)特定のソフトウェア1(image1_tag:v2)
c)Sudo(image1_tag:v3)
d)Apache httpデーモン(image1_tag:v4)
e)tomcat(image1_tag:v5)
docker push
コマンドを使用して、上記の各イメージをリポジトリにプッシュできます。リポジトリ名が一致する限り、それらは正常にプッシュされ、選択したリポジトリの下に表示され、正しくタグ付けされます。
さて、あなたの質問は、「それで、このリポジトリはどこにホストされているか/誰がサービスを管理しているか」です。そこで登場するのがDocker Registryです。デフォルトでは、プライベート/パブリックリポジトリを維持するために使用できるDockerハブレジストリ(オープンソース)を取得します。そのため、何も変更しなくても、イメージはDockerハブのプライベートリポジトリにプッシュされます。イメージタグをプッシュしたときの出力例は次のとおりです。
docker@my-docker-vm:/$ docker push mydockerhub/my-helloworld-repo:my_tag
The push refers to repository [docker.io/mydockerhub/my-helloworld-repo]
bf41e934d39d: Pushed
70d93396f87f: Pushed
6ec525dfd060: Pushed
705419d10b13: Pushed
a4aaef726d02: Pushed
04964fddc946: Pushed
latest: digest: sha256:eb93c92351bce785aa3ec0de489cfeeaafd55b7d90adf95ecea02629b376e577 size: 1571
docker@my-docker-vm:/$
すぐに入力docker images --digests -a
すると、プッシュされたイメージタグが、Docker Hubレジストリで管理されているプライベートリポジトリに対して新しい署名を表示していることを確認できます。