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
    
原文地址:https://www.cnblogs.com/pinked/p/13697033.html