zoukankan      html  css  js  c++  java
  • DockerFile

    DockerFile

    Dockerfile是用来构建docker镜像的文件,是命令行参数脚本.

    • 每个保留关键字(指令)都必须大写
    • 从上到下的顺序执行
    • 注释

    • 每一个指令都会创建提交一个新的镜像层并提交

    DockerFile的指令

    FROM		#基础镜像
    MAINTAINER	#镜像维护者信息
    RUN		#镜像构建时需要运行的命令
    ADD		#添加内容
    WORKDIR		#镜像工作目录
    VOLUME		#挂载的目录
    EXPOSE		#暴露端口
    CMD		#指定容器启动时运行的命令,会被覆盖
    ENTRYPOINT	#指定容器启动时运行的命令,可以追加命令
    ONBUILD		#但构建一个被继承DockerFile这个时候就会运行ONBUILD指令
    COPY		#类似ADD,将文件复制到镜像中
    ENV		#环境变量
    

    测试

    #编写dockerfile文件
    vim dockerfile11
    
    FROM centos
    MAINTAINER Pinked
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    RUN yum -y install vim
    RUN yum -y install net-tools
    EXPOSE 9000
    CMD echo $MYPATH
    CMD echo "----end----"
    CMD /bin/bash
    
    #通过文件构建镜像 -f 脚本文件 -t 目标镜像名:[TAG] .
    docker build -f dockerfile11 -t centos11:1.0 .
    
    #运行容器
    docker run -it centos11:1.0
    [root@86fdb1d6afeb local]# pwd
    /usr/local		#默认工作目录从根目录变成了配置的目录,ifconfig和vim也都能使用了
    
    #查看镜像更新历史
    docker history centos11:1.0
    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
    bd460f8c21dc        16 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B                  
    8e1ed9472722        16 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
    6c3eb3b29ede        16 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
    e27d967cb489        16 minutes ago      /bin/sh -c #(nop)  EXPOSE 9000                  0B                  
    3c1b3ddcad4e        16 minutes ago      /bin/sh -c yum -y install net-tools             22.8MB              
    808cbb82e38d        16 minutes ago      /bin/sh -c yum -y install vim                   57.2MB              
    d7ddbc981e50        16 minutes ago      /bin/sh -c #(nop) WORKDIR /usr/local            0B                  
    1933a4891a97        16 minutes ago      /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B                  
    1bedbd48e122        16 minutes ago      /bin/sh -c #(nop)  MAINTAINER Pinked            0B                  
    0d120b6ccaa8        4 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
    <missing>           4 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
    <missing>           4 weeks ago         /bin/sh -c #(nop) ADD file:538afc0c5c964ce0d…   215MB       
    

    制作Tomcat镜像

    1. 准备好tomcat和jdk安装包

    2. 编写dockerfile

      vim dockerfile
      ##########################
      FROM centos
      MAINTAINER Pinked
      
      COPY readme.md /usr/local/readme.md
      
      ADD apache-tomcat-9.0.34.tar.gz /usr/local/
      ADD jdk-8u261-linux-x64.tar.gz /usr/local/
      
      RUN yum -y install vim
      
      ENV MYPATH /usr/local
      WORKDIR $MYPATH
      
      ENV JAVA_HOME /usr/local/jdk1.8.0_261
      ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.34
      ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.34
      ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA/bin
      
      EXPOSE 8080
      
      CMD /usr/local/apache-tomcat-9.0.34/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.34/bin/logs/catalina.out
      
    3. 测试容器

      #如果dockerfile文件名为dockerfile,则build时不需要-f 文件名
      docker build -t pinkedtomcat .
      #启动镜像
      docker run -d -p 9000:8080 --name pinkedtomcat -v /home/pinked/build/tomcat/test:/usr/local/apache-tomcat-9.0.34/webapps/test -v /home/pinked/build/tomcat/logs:/usr/local/apache-tomcat-9.0.34/logs pinkedtomcat
      #进入容器
      docker exec -it 529fde7a668be /bin/bash
      [root@529fde7a668b local]# ls	#可以看到ADD名字帮我们进行了解压
      apache-tomcat-9.0.34  bin  etc	games  include	jdk1.8.0_261  lib  lib64  libexec  readme.md  sbin  share  src
      
      #测试访问
      curl localhost:9000
      
      #在挂载的test目录下操作
      [root@pinked test]# vim index.jsp
      #####################################
      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"%>
      
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="utf-8">
      <title>pinked</title>
      </head>
      <body>
      Hello World!<br/>
      <%
      out.println("你的 IP 地址 " + request.getRemoteAddr());
      %>
      %</body>
      %</html>
      [root@pinked test]# madir WEB-INF
      [root@pinked test]# cd WEB-INF/
      [root@pinked WEB-INF]# vim web.xml
      #####################################
      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
               version="4.0">
      </web-app>
      
      
      #测试访问
      curl localhost:9000/test/
      
      #在挂载的logs目录下查看tomcat日志
      [root@pinked logs]# cat catalina.out
      
  • 相关阅读:
    JavaScript学习笔记(十六) XMLHttpRequest
    Zabbix 3.0 安装笔记
    jetty端口灵活配置方法
    IDEA15入门常用设置
    [转] 填石头——时间管理
    [转]关于产品的落地
    [转]Netbeans IDE默认UTF-8编码
    如何解决SSH连接Linux超时自动断开?
    ActiveMQ部署步骤和后台管理网站Service Unavailable问题解决笔记
    [转]Maven2中snapshot快照库的使用
  • 原文地址:https://www.cnblogs.com/pinked/p/13697033.html
Copyright © 2011-2022 走看看