是否可以判断Docker镜像是在本地构建还是从远程存储库中提取?
澄清: 我们有大型图像(15+ GB),这些图像是Docker HUB中的自动构建。在开发/测试期间,通常可以更快地在本地构建这些图像,但使用相同的标签,以便它们可用于构建下游图像。如果我们能够确定给定的图像是在本地还是在下游构建,那将是有用的。
答案 0 :(得分:1)
鉴于这个最小Dockerfile
From busybox
Run echo "My first command"
Run echo "My second command"
Run echo "My third command"
您可以使用以下内容构建泊坞窗图像:
$ docker build -t abdelghany/myimage .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
abdelghany/myimage latest 159379ab5770 5 minutes ago 1.106 MB
busybox latest c75bebcdd211 3 weeks ago 1.106 MB
这是本地构建的图像的docker history
:
$ docker history abdelghany/myimage
IMAGE CREATED CREATED BY SIZE COMMENT
7a352943082a 8 seconds ago /bin/sh -c echo "My third command" 0 B
6e59deae3839 8 seconds ago /bin/sh -c echo "My second command" 0 B
24df2c17994f 9 seconds ago /bin/sh -c echo "My first command" 0 B
c75bebcdd211 3 weeks ago /bin/sh -c #(nop) CMD ["sh"] 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) ADD file:5dde1d6e0f6362350d 1.106 MB
现在,将图像推送到注册表,在本地删除它,然后再将其拉出来。
$ docker push abdelghany/myimage
$ docker rmi abdelghany/myimage
$ docker pull abdelghany/myimage
以下是已提取图片的docker history
:
$ docker history abdelghany/myimage
IMAGE CREATED CREATED BY SIZE COMMENT
159379ab5770 3 minutes ago /bin/sh -c echo "My third command" 0 B
<missing> 3 minutes ago /bin/sh -c echo "My second command" 0 B
<missing> 3 minutes ago /bin/sh -c echo "My first command" 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) CMD ["sh"] 0 B
<missing> 3 weeks ago /bin/sh -c #(nop) ADD file:5dde1d6e0f6362350d 1.106 MB
说明:泊坞窗历史记录显示用于创建图像图层的所有命令。对于本地构建的映像,每个命令都与要在构建缓存中使用的中间映像相关联(因此,下次在该docker主机上构建映像时,它将使用来自缓存的中间映像)。
当移动图像(即推动和拉动)时,您只移动最终图像,因此当您查看其显示的历史<missing>
时,表示没有与此命令关联的中间图像,这表示它是不是建立在这个docker主机上的。
答案 1 :(得分:0)
您可能想知道docker history
是否为您提供了所需的信息。
此命令为您提供Dockerfile执行的命令,因此MAINTAINERS
标记(或更正确的LABEL maintainer
)可能会出现在历史记录中,以便您了解图像创建者。