当前位置: 首页 > 知识库问答 >
问题:

Docker图像检查中“层”下列出的值是什么?

史懿轩
2023-03-14

我正在尝试编写一个程序,以确保容器的父(或祖父母或曾祖父母等)是已批准的容器列表中的容器。(以确保我的公司仅使用经批准的容器。)

当我在我的图像上运行命令docker image inspect时,我得到一些json响应。json的一部分如下所示:

"RootFS": {
    "Type": "layers",
    "Layers": [
        "sha256:cb42413394c4059335228c137fe884ff3ab8946a014014309676c25e3ac86864",
        "sha256:800afb4d883be4a1552b6afb33602caf7c69d5d9caa929aa961e74dd4df1f7fa",
        "sha256:6db0849b3e99f6471e878c20fdc1449623a5374d563f8463a791533f80f0387b",
        "sha256:f3bc884425c59baed7a7487a156c18d091ee1b567ab2bb9d286f110d31abb020",
        "sha256:139aa1a59c8a79c06c61077a51f83793e977bc818875d70ad1cfe7ce9e96cecd",
        "sha256:093496e1b286284fe6158c87e50aff6a905b809ee5f76d9c1897945fc53fd84c",
        "sha256:86248bc7c05ebaee4860efed18d1f6225909bbc03eccedd36ea4a154275540e1",
        "sha256:fe5e09df9bed600922ead78527eb7ff8a6b241dcee185aaa1213942b484cb769",
        "sha256:8b9bd48d3c62d7ddac27dfcc2c3c0cded5ef8ee530118b9212c8f4b8fd2e6faf",
        "sha256:4466146b6e2c6e31ffc6bf194ad75758e641e4f99dc6020b67d37024d9f99a98",
        "sha256:68f8345afd825ee2a0b675b5e93eb7b5504ad71a77136ba2014bd876e3ddbe68",
        "sha256:49a130b8b29dc6ac46c23bee6ffea315fe4b8ce4f621926834ad5e4fe7694a00",
        "sha256:bd13a0d30d036bbbd17d539310d0f821405c882419db56884a9562aa6d538975",
        "sha256:68f4281d14f5e70fc4a558fd4e3affcef4185d3fde53cd758cf46070327bbb06",
        "sha256:4410271de2fbbc8c72d545dfe212c29b83dc9e94e53a101e92526bdfcc566070",
        "sha256:5df5ddaa2216e7fa23096d325a984ca5993b6b04100850202a51abdac543f324",
        "sha256:a938e714d49d5122040f6af3dffc68efb1e9f19167e0982d4e1d2f5932166bec",
        "sha256:6e835bd4ceec7cc3b858dbbb61c32f08e27d3171428c76806bfab53616be1bad"
    ]
},

我以为这些就是我容器图像的层次。但该列表不包含容器映像的父级。所谓父级,我指的是在FROM子句中用于创建我检查过的图像的容器图像。)(我使用docker image ls--digests命令进行了检查。)

这些价值观是什么?

更重要的是,有没有办法获得容器实际层的列表?

共有1个答案

夏侯嘉荣
2023-03-14

也许潜水可以帮你。这是一个探索docker图像、图层内容等的工具。

除了TUI,您还可以在json文件中获得输出:

dive <your_image> --json <output_filename>

更新:另一种(更简单的)方法是使用docker历史记录

$ docker history docker.elastic.co/elasticsearch/elasticsearch:6.3.2                                                                          16:32:47
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
96dd1575de0f   2 years ago   /bin/sh -c #(nop)  CMD ["eswrapper"]            0B
<missing>      2 years ago   /bin/sh -c #(nop)  ENTRYPOINT ["/usr/local/b…   0B
<missing>      2 years ago   /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B
<missing>      2 years ago   /bin/sh -c #(nop)  EXPOSE 9200 9300             0B
<missing>      2 years ago   /bin/sh -c chgrp 0 /usr/local/bin/docker-ent…   4.95kB
<missing>      2 years ago   /bin/sh -c #(nop) COPY --chown=1000:0file:73…   4.26kB
<missing>      2 years ago   /bin/sh -c #(nop)  ENV PATH=/usr/share/elast…   0B
<missing>      2 years ago   /bin/sh -c #(nop) COPY --chown=1000:0dir:003…   217MB
<missing>      2 years ago   /bin/sh -c #(nop) WORKDIR /usr/share/elastic…   0B
<missing>      2 years ago   /bin/sh -c groupadd -g 1000 elasticsearch &&…   296kB
<missing>      2 years ago   /bin/sh -c yum update -y &&     yum install …   65.3MB
<missing>      2 years ago   /bin/sh -c ln -sf /etc/pki/ca-trust/extracte…   40B
<missing>      2 years ago   /bin/sh -c #(nop)  ENV JAVA_HOME=/opt/jdk-10…   0B
<missing>      2 years ago   /bin/sh -c curl -s https://download.java.net…   343MB
<missing>      2 years ago   /bin/sh -c #(nop)  ENV ELASTIC_CONTAINER=true   0B
<missing>      2 years ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
<missing>      2 years ago   /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B
<missing>      2 years ago   /bin/sh -c #(nop) ADD file:8f4b3be0c1427b158…   200MB

 类似资料:
  • 我是Docker的新手,正在尝试准确理解Docker映像是什么。Docker映像的每个定义都使用术语“层”,但似乎没有定义层的含义。 从Docker官方文件: 我们已经看到Docker图像是只读模板,从中启动Docker容器。每个图像由一系列层组成。Docker利用union文件系统将这些层合并到单个图像中。Union文件系统允许透明地覆盖单独文件系统(称为分支)的文件和目录,形成单个连贯的文件系

  • 我对Docker是全新的,我正在努力理解Docker形象到底是什么。Docker图像的每个定义都使用术语“层”,但似乎没有定义层的含义。

  • 在这种情况下,这些rest层ID是否与其他一些图像相对应呢?如果是真的,我可以视图层为图像吗?

  • 然而,我研究了API和公共库以及github的细节,但我找不到任何方法来: 检索所有公共存储库/映像(即使有数千个,我仍然需要一个开始列表来迭代) 查找图像的所有层 查找层的大小(因此不是图像,而是单个层的大小)。 谁能帮我找到检索这些信息的方法吗?

  • 让我们以whalesay图片为例<代码>docker history显示以下内容: 我想提取显示为的层。有这样做的工具/方法吗?

  • 根据反馈更新 对于等于或高于17.03的Docker版本,如何查看图像的图层?虽然我为早期的Docker系统找到了大量的解决方案(见这个问题),但现在还能这样做吗? 我特别感兴趣的是能够一次删除一层。我记得很久以前读过这篇文章(在Docker时代,大约12-18个月!)然而,我丢失了那个参考资料,在网上的任何地方都找不到。我从下面的第一个答案中了解到,中间层不再下载并报告丢失,但如果我下载了整个图