当前位置: 首页 > 面试题库 >

如何找出Docker映像的基本映像

魏冷勋
2023-03-14
问题内容

我有一个泊坞窗映像,我想找出它是从哪个映像创建的。当然有多层,但是我想找出最后一张图像(dockerfile中该图像的FROM语句)?

我尝试使用docker image historydocker image inspect但无法在其中找到此信息。

我尝试使用以下命令,但它给我一条错误消息

alias dfimage="sudo docker run -v /var/run/docker.sock:/var/run/docker.sock --rm xyz/mm:9e945ff"
dfimage febae8978318

这是我收到的错误消息

container_linux.go:235: starting container process caused "exec: \"febae8978318\": executable file not found in $PATH"
/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused "exec: \"febae8978318\": executable file not found in $PATH".

问题答案:

您可以使用此答案中建议的方法:https :
//stackoverflow.com/a/53841690/3691891

首先,拉chenzj/dfimage

docker pull chenzj/dfimage

获取图像的ID:

docker images | grep <IMAGE_NAME> | awk '{print $3}'

替换<IMAGE_NAME>为图像名称。使用此ID作为参数chenzj/dfimage

docker run -v /var/run/docker.sock:/var/run/docker.sock --rm chenzj/dfimage <IMAGE_ID>

如果您觉得这太难了,请拉chenzj/dfimage图像,然后使用以下docker-get-dockerfile.sh脚本:

#!/usr/bin/env sh

if [ "$#" -lt 1 ]
then
    printf "Image name needed\n" >&2
    exit 1
fi

image_id="$(docker images | grep "^$1 " | awk '{print $3}')"
if [ -z "$image_id" ]
then
    printf "Image not found\n" >&2
    exit 2
fi

docker run -v /var/run/docker.sock:/var/run/docker.sock --rm chenzj/dfimage "$image_id"

您需要传递图像名称作为参数。用法示例:

$ ./docker-get-dockerfile.sh alpine
FROM alpine:latest
ADD file:fe64057fbb83dccb960efabbf1cd8777920ef279a7fa8dbca0a8801c651bdf7c in /
CMD ["/bin/sh"]


 类似资料:
  • 我有一个spring boot应用程序,其中包含一个主类。我的Docker文件如下: 我正在使用这个Docker文件创建一个Docker映像。让我们考虑这个docker文件是Docker1。 我有另一个Spring Boot应用程序(没有主类),Docker文件如下: 我使用Docker1作为第二个应用程序的docker映像的基础映像。当我试图运行第二个docker映像时,我得到一个错误“no m

  • 我可以在docker上导入此图像,但无法运行。 我所做的: 将图像文件从“.img”格式压缩为“.tar.gz”格式,以便导入docker图像。我使用7-zip工具来转换这个。 我使用这个新文件(.tar.gz)<从本地文件导入了docker图像 试图运行此导入的映像,但失败。 执行的命令: 我对此错误进行了大量搜索,发现为了运行,我们需要指定创建映像时使用的路径(在Dockerfile中),但我

  • 问题内容: 假设我有一个docker映像,并将其部署在某些服务器上。但是我不希望其他用户访问该图像。是否有加密docker映像的好方法? 问题答案: 实际上,不,如果用户有权运行docker守护程序,那么他们将有权访问所有图像-这是由于docker要求更高的权限才能运行。 有关为什么这样做的更多信息,请参阅Docker安全指南的摘录。 Docker守护程序攻击面 使用Docker运行容器(和应用程

  • 问题内容: 我有以下图像: 当我尝试删除其中之一时,我得到: 如何删除它们?为什么会有这样的冲突? 问题答案: 为了删除所有图像,请使用给定命令 为了删除所有容器,请使用给定命令 警告:这将破坏您的所有图像和容器。 将无法还原它们! 该解决方案由Techoverflow.net提供。

  • 问题内容: 有什么方法可以手动下载Docker映像吗? 我的互联网连接速度非常慢,对我来说,最好获得图像的链接,然后以更高的互联网速度将其下载到其他位置, 如何获取由docker pull管理的映像的直接URL? 问题答案: 可能会得到,但让我提出另外两种建议! 如果可以通过快速连接连接到远程服务器,并且该服务器可以运行Docker,则可以在该服务器上,然后将映像(及其所有层和元数据)导出为tar

  • 问题内容: 我做了一个相当大的Docker容器。当我提交容器以创建映像时,该映像大约有7.8 GB。但是,当我将容器(不是映像!)放到压缩包中并重新导入时,映像只有3 GB。当然,历史已经丢失了,但是对我来说这没关系,因为我认为映像已“完成”并准备部署。 如何展平图像/容器而不将其导出到磁盘并再次导入? 并且:这样做是一个明智的主意,还是我错过了一些重要的观点? 问题答案: 从Docker 1.1