Her*_*arn 21 docker dockerfile docker-container
我想了解使用Dockerfile构建Docker镜像所涉及的执行步骤.我在下面列出了几个问题.请帮助我理解构建过程.
#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"
Run Code Online (Sandbox Code Playgroud)
用于构建映像的命令: 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
Run Code Online (Sandbox Code Playgroud)
在第2步中:
Step 2 : MAINTAINER RAGHU
---> Running in 532ed79e6d55
Run Code Online (Sandbox Code Playgroud)
问题1:它表明它在id为532ed79e6d55的容器中运行,但是这个容器形成了什么Docker镜像?
---> ea6184bb8ef5
Run Code Online (Sandbox Code Playgroud)
问题2:这个id是什么?它是图像还是容器?
Removing intermediate container 532ed79e6d55
Run Code Online (Sandbox Code Playgroud)
问题3:是否从中间容器中保存了多层的最终图像?
Elt*_*man 34
是的,Docker图像是分层的.当你建立一个新的形象,码头工人做这行的每个指令(RUN,COPY你Dockerfile等):
FROM第一个命令的基本图像)创建一个临时容器;最终的图像层标记有您为图像命名的任何内容 - 如果您运行docker history raghavendar/hands-on:2.0,这将是清晰的,您将看到每个图层以及创建它的指令的缩写.
您的具体查询:
1)532是根据图像ID创建的临时容器b17,它是您的FROM图像ubuntu:14.04.
2)ea6是作为指令输出而创建的图像层,即来自保存中间容器532.
3)是的.Docker将此称为联合文件系统,这是图像如此高效的主要原因.
| 归档时间: |
|
| 查看次数: |
12275 次 |
| 最近记录: |