Docker构build命令与 – 标签无法标记图像

我试图使用本地可用的Dockerfile来构buildDocker镜像。

docker build -t newimage . 

我也早些时候多次使用过这个命令,但是目前它不能工作,我坚持find它的原因。

如果有人能帮助我寻找一个可能的解决scheme或可能的领域,我将会非常有帮助。

我已经看过其他可能已经相关的post: Docker构build标签库名称

好的! 我发现问题的原因。

DOCKERbuild造过程

当我们build立一个docker图像时,在创build一个图像的过程中会生成其他几个中间图像。 我们从来没有在docker images看到它们,因为随着下一个中间图像的产生,较早的图像被移除。最后,我们只有一个是最终的图像。

我们使用-t--tag提供的标签是用于最终构build的,显然没有中间容器使用相同的标签。

发行说明

当我们尝试使用Dockerfile构buildDocker镜像时,有时候这个过程没有成功完成,类似的信息就像Successfully built image with IMAGEID

所以很显然,失败的版本将不会在docker images列出

现在,标签<none>图像是其他图像(中间)。 这造成了图像存在但没有标签的混淆,但图像实际上不是最终的构build应该是什么,因此没有标记。

Docker没有错。

一个图像可以有多个标签:

 alpine 3.4 4e38e38c8ce0 6 weeks ago 4.799 MB alpine latest 4e38e38c8ce0 6 weeks ago 4.799 MB 

在这个例子中,id为4e38e38c8ce0的图片被标记为alpine:latestalpine:3.4 。 如果你要执行docker build -t alpine . latest标签将从图像4e38e38c8ce0删除,并分配给新build的图像(具有不同的ID)。

如果您从图像中删除最后一个tag ,图像不会自动删除。 它显示为<none>

Docker也使用caching。 所以,如果你用Dockerfilebuild立一个图像,改变这个文件,重新构build图像,然后再撤销更改并重新构build,你将会得到两个图像 – 第一步和最后一步所build立的图像是相同的。 第二个图像将被“标记” <none>

如果你想保留一个图像的多个版本,请使用docker build -t tag:version image:tag . 在每次进行一些更改时version tag都会更改。

编辑 :我所谓的标签实际上是图像名称,我所谓的版本称为标签: https : //docs.docker.com/engine/reference/commandline/tag/