ONBUILD
格式:ONBUILD <其它指令>
ONBUILD
它后面跟的是其它指令,比如RUN
,ADD
等,这些指令在当前镜像构建时并不会被执行,只有以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行。
验证
首先写一个Dockerfile文件,里面写上ONBUILD指令
FROM centos:7
CMD /bin/bash
ONBUILD RUN echo "---------- parent image's ONBUILD ----------"
构建新镜像
[root@localhost myDocker]# docker build -f /myDocker/Dockerfile -t parent_centos .
Sending build context to Docker daemon 3.072kB
Step 1/3 : FROM centos:7
---> 5e35e350aded
Step 2/3 : CMD /bin/bash
---> Running in 62dea781892d
Removing intermediate container 62dea781892d
---> f3b04a1247d8
Step 3/3 : ONBUILD RUN echo "---------- parent image's ONBUILD ----------"
---> Running in 12e21a43da07
Removing intermediate container 12e21a43da07
---> 6da42c445faa
Successfully built 6da42c445faa
Successfully tagged parent_centos:latest
现在另外写一个Dockerfile文件,如下
FROM parent_centos #继承于刚才构建的parent镜像
CMD /bin/bash
构建新的镜像
[root@localhost myDocker]# docker build -f /myDocker/Dockerfile2 -t child_centos .
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM parent_centos
# Executing 1 build trigger
---> Running in a29c1972c042
---------- parent image's ONBUILD ----------
Removing intermediate container a29c1972c042
---> 7ccc8643ec52
Step 2/2 : CMD /bin/bash
---> Running in f523bb0b649c
Removing intermediate container f523bb0b649c
---> 7f884226ebb3
Successfully built 7f884226ebb3
Successfully tagged child_centos:latest
刚才的构建信息出现了如下几行信息,说明在刚才构建child_centos的时候,已经触发了最开始所写的ONBUILD
# Executing 1 build trigger
---> Running in a29c1972c042
---------- parent image's ONBUILD ----------
Removing intermediate container a29c1972c042