本地我有这些图片:
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上,如果我没有传递特定的标签,那就是"最新的"正在使用的图像?
由于
答案 0 :(得分:2)
第一个问题:我很确定我没有使用标记新图像 docker commit或docker build / push with tag 1.这是某种类型 默认某种程度?
不,如果未指定任何标记,则默认标记为latest
。
第二个问题:在docker run / create / pull上,如果我没有传递特定的 标签,是最新的"正在使用的图像?
是
答案 1 :(得分:0)
图像由图像ID标识,这是不会改变的不可变部分。它指向一组不变的文件系统层和一些图像元数据(在图像ID上运行docker inspect
时看到的json)。用于提取,推送和运行映像的用户可读名称是包含注册表/存储库和标记的引用。您可以将多个引用指向同一个图像(如上例所示),它们可以更改它们指向的图像ID,并且您最终可能会得到一个图像ID,而没有任何引用指向它。
第一个问题:我很确定我没有使用docker commit或docker build / push with tag 1来标记新图像。这是某种默认方式吗?
您不太可能提交并创建相同的图片ID。很可能你做了拉动或跑步(跑步会隐含地执行拉动)。您可能已使用相同的Dockerfile执行构建以标记新名称,其中缓存了Dockerfile中的所有步骤。您可能已执行docker tag
来创建对现有图像的新引用。
第二个问题:在docker run / create / pull上,如果我没有传递特定标签,是否正在使用“最新”图像?
如果不指定标记,则docker将默认为:latest
。最好将其理解为“默认”,因为它不一定是最近推送到该存储库的映像。这是执行docker run
和docker pull
时的默认标记,但如果您执行的docker push
没有标记,则默认为推送存储库的所有标记。
您可以使用docker image rm
命令安全地删除图像的额外标记。如果有多个标签,则删除标签本身。如果只有一个标记,则该图像也将从本地docker主机(而不是从注册表服务器)中删除。