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
      
  • 相关阅读:
    20200209 ZooKeeper 3. Zookeeper内部原理
    20200209 ZooKeeper 2. Zookeeper本地模式安装
    20200209 Zookeeper 1. Zookeeper入门
    20200206 尚硅谷Docker【归档】
    20200206 Docker 8. 本地镜像发布到阿里云
    20200206 Docker 7. Docker常用安装
    20200206 Docker 6. DockerFile解析
    20200206 Docker 5. Docker容器数据卷
    20200206 Docker 4. Docker 镜像
    Combining STDP and Reward-Modulated STDP in Deep Convolutional Spiking Neural Networks for Digit Recognition
  • 原文地址:https://www.cnblogs.com/pinked/p/13697033.html
Copyright © 2011-2022 走看看