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

    科技2024-08-08  28

    一、需求

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

     

     

    二、ONBUILD指令

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

    软件工程小施同学 认证博客专家 学堂在线讲师 每一个伟大,都源于一个勇敢的开始(微博:“软件工程小施同学”,公号”微程序学堂“)
    Processed: 0.011, SQL: 8