docker学习笔记之创建本地镜像(三)docker build的结果

docker build -t tonyxinminghui/test:v1 .
Sending build context to Docker daemon 586.9 MB
Step 1 : FROM ubuntu:latest
—> f753707788c5
Step 2 : MAINTAINER Tony “[email protected]
—> Using cache
—> 9a074bfd4e0f
Step 3 : USER root
—> Using cache
—> cedca328fccd
Step 4 : RUN apt-get update
—> Using cache
—> 49cce3ae4c16
Step 5 : RUN apt-get install -y nginx
—> Using cache
—> c9e03a2f0d91
Step 6 : RUN touch abc.txt && echo “abc” >> abc.txt
—> Using cache
—> 8715d7433ca2
Step 7 : EXPOSE 80 8080 1038
—> Using cache
—> 8ae97691f302
Step 8 : ADD abc.txt /opt/
—> 98c3391c79a4
Removing intermediate container aea360b8fffb
Step 9 : ADD /webapp /opt/webapp
—> 0ee25a0e61d0
Removing intermediate container e3ab8fd354a4
Step 10 : ADD https://www.baidu.com/img/bd_logo1.png /opt/
Downloading [==================================================>] 7.877 kB/7.877 kB
—> 2e4ae58e3323
Removing intermediate container 919b1fc2adcd
Step 11 : ENV WEBAPP_PORT 9090
—> Running in 8838dca291b3
—> a28ca82f6aa0
Removing intermediate container 8838dca291b3
Step 12 : WORKDIR /opt/
—> Running in 76875fe08261
—> 8179c49a18be
Removing intermediate container 76875fe08261
Step 13 : ENTRYPOINT ls
—> Running in b0de32af2a63
—> 8cfa5ad7726a
Removing intermediate container b0de32af2a63
Step 14 : CMD -a -l
—> Running in 9fd357b530e1
—> cad61565b42e
Removing intermediate container 9fd357b530e1
Step 15 : VOLUME /data /var/www
—> Running in 9beb7a612b3c
—> a7ed6fac5337
Removing intermediate container 9beb7a612b3c
Step 16 : ONBUILD add ./app/src
—> Running in 812ad8d2e233
—> 98b1c1765131
Removing intermediate container 812ad8d2e233
Step 17 : ONBUILD run echo “on build excuted” >> onbuild.txt
—> Running in d2249b8afda4
—> 4bd8ffd382f4
Removing intermediate container d2249b8afda4
Successfully built 4bd8ffd382f4

注意点:在ADD添加文件中,主机文件/目录必须在Dockerfile所在目录的相对位置。比如我的Dockerfile在home下,那么添加的abc.txt和webapp/目录也应该在home下。不能是在home下的子目录下。

当我们创建好镜像后,可以修改它的tag,如命令
docker tag tonyxinminghui/test:v1 tonyxinminghui/test:v2创建了一个镜像的两个引用。

现在我们来具体研究一下build的过程。
从上述过程来看Dockerfile中的每一条语句都相当于创建了一个临时镜像
举个例子:
Step 8 : ADD abc.txt /opt/
—> 98c3391c79a4
Removing intermediate container aea360b8fffb。
从前一条语句创建的临时镜像 运行一个容器aea360b8fffb,执行相应的操作,提交这个容器给另一个临时镜像98c3391c79a4,最后删除这容器。可以设置docker build -rm=false,设置不删除临时缓存。
这时之后的几个步骤,但是前几步有所不同。
Step 1 : FROM ubuntu:latest
—> f753707788c5
Step 2 : MAINTAINER Tony “[email protected]
—> Using cache
—> 9a074bfd4e0f
Step 3 : USER root
—> Using cache
—> cedca328fccd
Step 4 : RUN apt-get update
—> Using cache
—> 49cce3ae4c16

这里的using cache 使用缓存。这是Docker的缓存机制导致。每一条指令的执行都会产生缓存镜像,若指令链执行过并产生了缓存镜像,下次执行时,直接用缓存镜像,无需再次执行指令。docker build –no-cache=true,可以禁用缓存机制

你可能感兴趣的:(docker)