中间容器如何形成?

我想了解使用Dockerfile构建Docker映像所涉及的执行步骤。我在下面列出了几个问题。请帮助我了解构建过程。

Dockerfile内容

#from base image

FROM ubuntu:14.04

#author name

MAINTAINER RAGHU

#commands to run in the container

RUN echo "hello Raghu"

RUN sleep 10

RUN echo "TASK COMPLETED"

用于生成映像的命令: docker build -t raghavendar/hands-on:2.0 .

Sending build context to Docker daemon 20.04 MB

Step 1 : FROM ubuntu:14.04

---> b1719e1db756

Step 2 : MAINTAINER RAGHU

---> Running in 532ed79e6d55

---> ea6184bb8ef5

Removing intermediate container 532ed79e6d55

Step 3 : RUN echo "hello Raghu"

---> Running in da327c9b871a

hello Raghu

---> f02ff92252e2

Removing intermediate container da327c9b871a

Step 4 : RUN sleep 10

---> Running in aa58dea59595

---> fe9e9648e969

Removing intermediate container aa58dea59595

Step 5 : RUN echo "TASK COMPLETED"

---> Running in 612adda45c52

TASK COMPLETED

---> 86c73954ea96

Removing intermediate container 612adda45c52

Successfully built 86c73954ea96

在步骤2中:

Step 2 : MAINTAINER RAGHU

---> Running in 532ed79e6d55

问题1:它表明它在ID为532ed79e6d55的容器中运行,但是此容器是用什么Docker映像形成的?

---> ea6184bb8ef5

问题2:这是什么ID?是图像还是容器?

Removing intermediate container 532ed79e6d55

问题3:是否从中间容器中保存了多层形成的最终图像?

回答:

是的,Docker映像是分层的。当你建立一个新的形象,码头工人做这行的每个指令(RUNCOPY你Dockerfile等):

  1. 从上一个图像层(或FROM第一个命令的基本图像)创建一个临时容器;
  2. 在临时的“中间”容器中运行Dockerfile指令;
  3. 将临时容器另存为新的图像层。

最终的图像层将使用您命名的图像进行标记-如果运行docker history raghavendar/hands-

on:2.0,这将很明显,您会看到每个层以及创建它的指令的缩写。

您的具体查询:

1)532是从图像ID创建的临时容器b17,这是您的FROM图像,ubuntu:14.04

2)ea6是作为指令输出(即从保存中间容器)创建的图像层532

3)是的。Docker将此称为联合文件系统,这是图像如此高效的主要原因。

以上是 中间容器如何形成? 的全部内容, 来源链接: utcz.com/qa/398086.html

回到顶部