Docker教程小白实操入门(16)--如何使用ONBUILD指令在构建下一级镜像时做些什么

一、需求

当前镜像被作为基础镜像,去构建下一级镜像时,执行一些指令

二、ONBUILD指令

# ONBUILD添加一个将来执行的触发器(trigger)
ONBUILD <其它指令>
  • ONBUILD 是一个特殊的指令,它后面跟的是其它指令,比如RUNCOPY等,而这些指令,在当前镜像构建时并不会被执行。
  • 只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行。
  • 在镜像构建完成后,触发器指令会被清除,不会被子孙镜像继承。
  • 在构建过程后,触发器指令会被存储在镜像详情中,其主键是OnBuild,可以使用docker inspect命令查看。

三、实例

#创建一个空文件夹,并进入其中
mkdir newdir4
cd newdir4
#创建一个Dockerfile文件
touch Dockerfile
 
#输入Dockerfile文件内容
#********** Begin *********#
#以busybox为基础镜像
echo 'FROM busybox' > Dockerfile
 
echo 'ONBUILD RUN touch 1.txt' >> Dockerfile
 
#********** End **********#


#文件内容完毕,在当前文件夹中执行
#********** Begin *********#
#以该Dockerfile构建一个名为image1的镜像
docker build -t image1 .
#********** End **********#
 

# 可以查看有哪些触发器
docker inspect image1


# 创建容器
docker run image1 cat 1.txt

提示不存在1.txt文件,现在我们重新基于image1新建一个镜像

#创建一个空文件夹,并进入其中
mkdir newdir5
cd newdir5
#创建一个Dockerfile文件
touch Dockerfile
 
#输入Dockerfile文件内容
#********** Begin *********#
#以image1为基础镜像
echo 'FROM image1' > Dockerfile
 
echo 'RUN echo 'hello'' >> Dockerfile
 
#********** End **********#


#文件内容完毕,在当前文件夹中执行
#********** Begin *********#
#以该Dockerfile构建一个名为image2的镜像
docker build -t image2 .
#********** End **********#
 

# 创建容器
docker run image2 cat 1.txt

参考:https://www.educoder.net/shixuns/zawfjtnm/challenges

猜你喜欢

转载自blog.csdn.net/u013288190/article/details/108952660
今日推荐