Docker 中间容器是如何形成的?

Docker 中间容器是如何形成的?,docker,dockerfile,docker-container,Docker,Dockerfile,Docker Container,我想了解使用Dockerfile构建Docker映像所涉及的执行步骤。下面我列出了几个问题。请帮助我理解构建过程 Dockerfile内容 用于生成映像的命令:docker build-t raghavender/handle-on:2.0。 Sending build context to Docker daemon 20.04 MB Step 1 : FROM ubuntu:14.04 ---> b1719e1db756 Step 2 : MAINTAINER RAGHU --->

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

Dockerfile内容 用于生成映像的命令:
docker build-t raghavender/handle-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图像是分层的。构建新映像时,Docker会对Dockerfile中的每条指令(
RUN
COPY
等)执行此操作:

  • 从上一个图像层(或第一个命令的基础
    from
    图像)创建临时容器
  • 在临时“中间”容器中运行Dockerfile指令
  • 将临时容器另存为新的图像层
  • 最后一个图像层用您命名的图像进行标记-如果运行
    docker history Raghavender/hands-on:2.0
    ,您将看到每个层以及创建它的指令的缩写

    您的具体查询:

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

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

    3) 对。Docker称之为,这是图像如此高效的主要原因

    Removing intermediate container 532ed79e6d55