linux – Docker History Base Image添加:sha256hash

linux – Docker History Base Image添加:sha256hash,第1张

概述我正在努力更好地理解docker历史输出.当我运行docker history nginx:latest时,我得到的输出几乎与 Dockerfile匹配: /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon off;"]/bin/sh -c #(nop) EXPOSE 443/tcp 80/tcp/bin/sh -c ln -sf /dev/stdout /v 我正在努力更好地理解docker历史输出.当我运行docker history Nginx:latest时,我得到的输出几乎与 Dockerfile匹配:

/bin/sh -c #(nop) CMD ["Nginx" "-g" "daemon off;"]/bin/sh -c #(nop) EXPOSE 443/tcp 80/tcp/bin/sh -c ln -sf /dev/stdout /var/log/Nginx/access.log  && ln -sf /dev/stderr /var/log/Nginx/error.log/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62  && echo "deb http://Nginx.org/packages/mainline/debian/ jessIE Nginx" >> /etc/apt/sources.List && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y       ca-certificates Nginx=${Nginx_VERSION} Nginx-module-xslt Nginx-module-geoip Nginx-module-image-filter Nginx-module-perl Nginx-module-njs gettext-base  && rm -rf /var/lib/apt/Lists/*/bin/sh -c #(nop) ENV Nginx_VERSION=1.11.9-1~jessIE/bin/sh -c #(nop) MAINTAINER Nginx Docker Maintainers "[email protected]"/bin/sh -c #(nop) CMD ["/bin/bash"]/bin/sh -c #(nop) ADD file:89ecb642d662ee7edbb868340551106d51336c7e589fdaca4111725ec64da957 in /

有三个值得注意的例外

>所有行都以/ bin / sh -c#(nop)开头,但第三行是Dockerfile中的RUN命令 – 没什么大不了的
>命令是反向的(Dockerfile中的最后一个命令是使用docker history列出的第一个命令) – 也没什么大不了的
>这个是踢球者 – FROM debian:来自Dockerfile的jessIE线被翻译成:

ADD文件:89ecb642d662ee7edbb868340551106d51336c7e589fdaca4111725ec64da957 in /
CMD [“/ bin / bash”]

我花了一点时间才意识到上面的最后两个命令(ADD和CMD [“/ bin / bash”]行)是从基本图像debian继承的:jessIE.一旦我弄清楚了,我想,“自己,文件:89ec … da957必须是作为文件系统包含的rootfs.tar.xz的sha256哈希.但不,rootfs.tar.xz的sha256哈希是467328e24c316fd058f086eb8eb77706f3f448ad8886d202e7c9687d30692eca.

这就是我的问题:码头历史中列出的哈希来自哪里?为什么它与rootfs.tar.xz的实际哈希值不同?

我已经彻底审查了Docker的大部分文档,没有运气,包括:

> https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/
> https://docs.docker.com/engine/reference/commandline/history/
> https://docs.docker.com/engine/reference/builder/

哈希在所有使用debian的图像中都是一致的:jessIE作为基本图像.甚至是docker的历史debian:jessIE显示了相同的哈希:

/bin/sh -c #(nop) CMD ["/bin/bash"]/bin/sh -c #(nop) ADD file:89ecb642d662ee7edbb868340551106d51336c7e589fdaca4111725ec64da957 in /

我想你可能会同意,只有一个文件可能在debian中有一个哈希:jessIE Dockerfile:

FROM scratchADD rootfs.tar.xz /CMD ["/bin/bash"]

如果有人能提供一些见解或指向我尚未找到的资源,我将不胜感激.

解决方法 docker brew debian image由中间容器制成,如“ Understand images,containers,and storage drivers”中所述.

见issue 25925:每个层都存储在(例如)/ var / lib / docker / aufs / mnt /中.

所以ADD文件:89ecb642d662ee7edbb868340551106d51336c7e589fdaca4111725ec64da95将添加在/ var / lib / docker / aufs / mnt / 89ecb642d662ee7edbb868340551106d51336c7e589fdaca4111725ec64da95中找到的所有文件.

(注意:我在“Docker missing layer IDs in output”中提到了(nop)部分)

总结

以上是内存溢出为你收集整理的linux – Docker History Base Image添加:sha256hash全部内容,希望文章能够帮你解决linux – Docker History Base Image添加:sha256hash所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1017325.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存