美文网首页Docker
DockerFile解析

DockerFile解析

作者: 码农GG | 来源:发表于2020-04-11 15:16 被阅读0次

    1.Dockerfile定义

    Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
    构建三步骤:

    编写Dockerfile文件,
    docker  build 
    docker  run
    
    image.png

    2.DockerFile构建过程解析

    Dockerfile
    2.1Dockerfile内容基础知识
    1.每条保留字指令都必须为大写字母且后面要跟随至少一个参数
    2.指令按照从上到下,顺序执行
    3.#表示注释
    4.每条指令都会创建一个新的镜像层,并对镜像进行提交。

    2.2执行Dockerfile的大致流程
    1.docker从基础镜像运行一个容器
    2.执行一条指令并对容器作出修改
    3.执行类似docker commit的操作提交一个新的镜像层。
    4.docker再基于刚提交的镜像运行一个新容器
    5.执行dockerfile中的下一条指令直到所有指令都执行完成

    3.DockerFile保留字指令

    image.png

    4.案例

    4.1Base镜像 scratch

    4.2自定义镜像
    4.2.1编写DockerFile

    from  centos
    MAINTAINER  lw<lw@126.com>
    ENV MYPATH /usr/local
    WORKDIR  $MYPATH
    
    RUN  yum -y install  vim
    RUN  yum -y install  net-tools
    
    EXPOSE 80
    
    CMD echo $MYPATH
    CMD echo "success-----------------OK"
    CMD /bin/bash
    

    4.2.2构建
    docker build -f /mydocker/dockerfile1 -t mycentos:1.1 .

    image.png

    4.2.3运行
    可以看到新的镜像已经支持vim/ifconfig命令,扩展成功

    image.png

    4.2.4列出镜像的变更历史

    image.png

    4.3CMD/ENTRYPOINT镜像案例

    image.png

    4.3.1制作CMD版dockerfile

    image.png

    如果希望显示HTTP 头信息,需要加上-i参数。直接在run 后面加发生错误,等同于CMD -i,覆盖了CMD ["curl","-s","http://ip.cn"]

    image.png

    4.3.2制作ENTRYPOINT 版dockerfile

    image.png

    4.4ONBUILD
    当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发。

    image.png image.png

    4.5自定义tomcat镜像
    1.创建目录mkdir -p /zzyyuse/mydockerfile/tomcat9
    2.创建文件touch c.txt
    3.tomcat和jdk安装压缩包拷贝到/zzyyuse/mydockerfile/tomcat9
    4.在/zzyyuse/mydockerfile/tomcat9目录下新建Dockerfile文件

    FROM         centos
    MAINTAINER    zzyy<zzyybs@126.com>
    #把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下
    COPY c.txt /usr/local/cincontainer.txt
    #把java与tomcat添加到容器中
    ADD jdk-8u171-linux-x64.tar.gz /usr/local/
    ADD apache-tomcat-9.0.8.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_171
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.8
    ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.8
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
    #容器运行时监听的端口
    EXPOSE  8080
    #启动时运行tomcat
    # ENTRYPOINT ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh" ]
    # CMD ["/usr/local/apache-tomcat-9.0.8/bin/catalina.sh","run"]
    CMD /usr/local/apache-tomcat-9.0.8/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.8/bin/logs/catalina.out
    

    6.目录内容


    image.png

    7.构建


    image.png

    8.运行

    docker run -d -p 9080:8080 --name myt9 
    -v /zzyyuse/mydockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.8/webapps/test 
    -v /zzyyuse/mydockerfile/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.8/logs 
    --privileged=true zzyytomcat9
    备注:Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied
    解决办法:在挂载目录后多加一个--privileged=true参数即可
    
    image.png

    9.验证


    image.png

    相关文章

      网友评论

        本文标题:DockerFile解析

        本文链接:https://www.haomeiwen.com/subject/frsjmhtx.html