Docker 具有相同存储库和不同标记的图像

Docker 具有相同存储库和不同标记的图像,docker,Docker,在本地,我有以下图像: myrepo/imagexxx 1 f5d32d07d008 1 weeks ago 2.44GB myrepo/imagexxx latest f5d32d07d008 1 weeks ago 2.44GB 如果您注意到了,请使用相同的存储库名称、ID和大小。只有标签不同 第一个问题:我很确定我没有使用docker commit或doc

在本地,我有以下图像:

myrepo/imagexxx    1                   f5d32d07d008        1 weeks ago         2.44GB
myrepo/imagexxx    latest              f5d32d07d008        1 weeks ago         2.44GB
如果您注意到了,请使用相同的存储库名称、ID和大小。只有标签不同

第一个问题:我很确定我没有使用docker commit或docker build/push标记1标记新图像。这是某种违约吗

第二个问题:在docker run/create/pull上,如果我没有传递特定标记,是否使用“最新”图像

谢谢

第一个问题:我很确定我没有使用 docker提交或docker构建/推送,标记为1。这是某种 不知何故违约

否,如果未指定标记,则默认标记为
latest

第二个问题:在docker run/create/pull上,如果我没有通过特定的 标签,是否正在使用“最新”图像


是。

图像由图像id标识,这是不变的部分,不会更改。它指向一组不变的文件系统层和一些图像元数据(在图像id上运行
docker inspect
时看到的json)。用于拉、推和运行图像的用户可读名称是包括注册表/存储库和标记的引用。您可以有多个引用指向同一个图像(如上面的示例中所示),它们可以更改它们指向的图像id,最终您可以得到一个图像id,而没有任何引用指向它

第一个问题:我很确定我没有使用docker commit或docker build/push标记1标记新图像。这是某种违约吗

您不太可能提交并创建相同的映像id。很可能您执行了拉取或运行(运行将隐式执行拉取)。您可能已使用相同的Dockerfile执行生成,以标记缓存Dockerfile中所有步骤的新名称。您可能已经执行了
docker标记
,以创建对现有图像的新引用

第二个问题:在docker run/create/pull上,如果我没有传递特定标记,是否使用“最新”图像

如果不指定标记,docker将默认为
:latest
。最好将其理解为“默认”,因为它不一定是最近推送到该存储库的映像。当您执行
docker run
docker pull
时,这是默认标记,但是如果您在没有标记的情况下执行
docker push
,它将默认为推送存储库的所有标记


您可以使用
docker image rm
命令安全地删除图像的额外标记。如果有多个标记,则会删除标记本身。如果只有一个标记,图像也将从本地docker主机(而不是注册表服务器)中删除。

谢谢您的回复。那我肯定是以某种方式通过了1级。对于其他人来说,一切都很清楚。