Docker构建和推送详细信息

时间:2018-05-14 07:57:51

标签: docker build docker-build

很多人都知道,docker builddocker push在一般情况下处于较高的水平,但他们在较低的水平上做了什么?

假设我们有像这样的 Dockerfile

FROM alpine:latest
RUN touch ~/tmp
RUN touch ~/tmp2

这将为/var/lib/docker/overlay2中的每个图层创建增量文件系统(仅更改)。

  1. 图层包含整个文件系统
  2. 图层包含文件~/tmp
  3. 图层包含文件~/tmp2
  4. 打开问题

    • 各层之间的实际联系是什么?是否有 json ,包含所有图像信息,包括排序的图层列表?

    • 在执行docker push时将其发送到docker注册表时生成了哪种可交付项是 tar.gz ,类似于docker save

1 个答案:

答案 0 :(得分:0)

从我的观点来看:

  • 每个层都被传输(仅修改文件添加/更新/删除文件指令)到docker-registry。
  • 每一层都知道它的父层。
  • 因此,当您下拉子图层时,它会将父图层层次结构拉到顶部(基础图层)。
  • 每个图层都由标识符标识(sha256代码,而不是名称)。
  • 层次结构中的任何更改都会导致所有子图像图层的sha256代码名称不同(即使该图层没有变化)。

随意添加或建议改进。