为什么 "docker push" 推送多张图片,推送到哪里?

Why does "docker push" push several images and where?

我在名为 alek/test 的 docker 集线器上有私人仓库。 在我的 Mac:

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
alek/test           0.1                 dc1a7cc41129        33 minutes ago      643 MB
node                0.12.7              9e20baae42c8        5 days ago          641.6 MB

$ docker push alek/test
The push refers to a repository [docker.io/alek/test] (len: 1)
dc1a7cc41129: Image successfully pushed 
537a913fe639: Image successfully pushed 
b40236e9037f: Image successfully pushed 
53c8b1d50397: Image successfully pushed 
e8c37c1e2189: Image successfully pushed 
68bbfd9543a7: Image successfully pushed 
9e20baae42c8: Image already exists 
8b74d7a75802: Image successfully pushed 
3383909e8f95: Image already exists 
e0919a8b95a8: Image already exists 
6ad0799af6bd: Image successfully pushed 
9213e81cb0f2: Image successfully pushed 
607e965985c1: Image successfully pushed 
1ff9f26f09fb: Image successfully pushed 
9a61b6b1315e: Image already exists 
902b87aaaec9: Image successfully pushed 
0.1: digest: sha256:a2b1d8a3b283f13e8d6a1407e886ca8ee62d93377949e050b9e05509ce6aaf86 size: 30568

刚刚发生了什么???为什么推送了好几张图?还有它们实际被推送的地方——我在 docker 集线器(屏幕)上的私人回购没有任何改变。

我不确定我是否正确理解 docker 集线器。 我想要的是从 Dockerfile 构建图像并将其推送到我的存储库,以便客户端可以将其拉到他身边并 运行 在容器中...

你没看错。

图像中的每一层都有一个图像,对应于Docker文件中的每条指令。 Docker 独立推送这些层。

由于您没有指定标签,Docker 将推送存储库中的所有标签(在本例中仅为 0.1)。任何有权访问您的存储库的人都应该能够使用 docker pull alek/test:0.1 下载它。如果您查看 Hub 上的 tags 选项卡,您应该会在那里看到您的图像。

如果你在没有标签的情况下执行 docker push,我认为它会推动整个回购 - 即所有图像。如果您在没有标签的情况下执行 docker rundocker pull,它将使用 latest 标签。所以我假设 0.1 标签在你的情况下被推送了,但你需要说 docker pull alek/test:0.1 来拉它。