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:latest
和alpine: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/