1、ONBUILD使用:
编写Dockerfile脚本,如下:
FROM centos
RUN yum install -y curl
ENTRYPOINT ["curl", "-s","https://ip.cn/api/index?ip=&type=0"]
ONBUILD RUN echo "father onbuild -------886"
执行docker build -f /mydocker/Dockerfile4 -t myip_father . (注意后面有一个点)
构建父镜像,再编写脚本,如下:
FROM myip_father
RUN yum install -y curl
CMD ["curl", "-s","https://ip.cn/api/index?ip=&type=0"]
执行docker build -f /mydocker/Dockerfile5 -t myip_son . (注意后面有一个点)
构建子镜像,在子镜像构建的过程中执行了父镜像中的ONBUILD,如图:
2、COPY 使用:
mkdir -p /haijin/mydocker/tomcat9 创建文件夹目录
cd /haijin/mydocker/tomcat9 进入目录
touch c.txt 创建一个文件
将tomcat和jdk复制到该目录下,如图:
编写Dockerfile,相关脚本如下:
FROM centos
MAINTAINER haijin<haijin@126.com>
#把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下
COPY c.txt /usr/local/cincontainer.txt
#把java与tomcat添加到容器中
ADD jdk-8u191-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.26.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#设置工作访问时候的WORKDIR路径,登录落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_191
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.26
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.26
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE 8080
#启动时运行tomcat
#ENTRYPOINT ["/usr/local/apache-tomcat-9.0.26/bin/startup.sh"]
#CMD ["/usr/local/apache-tomcat-9.0.26/bin/catalina.sh" , "run"]
CMD /usr/local/apache-tomcat-9.0.26/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.26/logs/catalina.out
然后执行docker build -t haijintomcat9 .(注意后面有一个点,对比docker build -f Dockerfile -t haijintomcat9,名称为Dockerfile时,可不写-f以及名称)
运行docker容器,执行命令:docker run -d -p 8080:8080 --name myt9 -v /haijin/mydockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.26/webapps/test -v /haijin/mydockerfile/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.26/logs --privileged=true haijintomcat9
执行完后访问,http://【ip】:8080/,即可,如图:
到此我们就成功的自定义了一个docker镜像并成功运行了起来。
docker exec 【容器id】 ls -l 查看容器内部结构
docker exec -it 【容器id】 /bin/bash 进入容器中