1,DockerFile体系结构(保留字指令)

image.png

2,案例

1,Base镜像(scratch)

Docker Hub中99%的镜像都是通过在Base镜像中安装和配置需要的软件构建出来的
image.png

2,自定义镜像myCentOS

1,编写

① Hub默认CentOS默认情况
image.png
② 新建编写Dockerfile文件目录和文件

  1. mkdir -p /mydockerfile
  2. vim Dockerfile

③ Dockerfile 内容

  1. FROM centos
  2. MAINTAINER zhangdx<49924009@qq.com>
  3. ENV MYPATH /usr/local
  4. WORKDIR $MYPATH
  5. RUN yum -y install vim
  6. RUN yum -y install net-tools
  7. EXPOSE 80
  8. CMD echo $MYPATH
  9. CMD echo "success--------------OK"
  10. CMD /bin/bash

2,构建

docker build -f Dcokerfile文件 -t 新镜像名字:TAG .
如果Dockerfile文件的默认名为Dockerfile 构建命令时可以不用加 -f 文件地址
eg : docker build -f /mydockerfile/Dockerfile -t zhangdx/mycentos1.0 . →最后一个.代表当前路径
image.png

3,运行

eg:docker run -it 260ddab51a00 →260ddab51a00 自定义的mycentos1.0s
image.png

4,列出镜像的变更历史

docker history 镜像名
eg:docker history 260ddab51a00 →260ddab51a00 自定义的mycentos1.0
image.png

3,自定义镜像Tomcat

1,案例要求

自定义CentOS7,增加vim, 安装JDK8(jdk-8u271-linux-x64.tar.gz),Tomcat9(apache-tomcat-9.0.41.tar.gz)
注:JDK版本,错误经历:JDK下了这个版本(jdk-8u271-linux-aarch64.tar.gz)

2,编写

a,新建编写Dockerfile文件目录和文件

  1. mkdir -p /mydockerfile
  2. vim Dockerfile_tomcat

b,将JDK和Tomcat拷贝到上一步的目录(mydockerfile)
c,Dockerfile-tomcat 内容

  1. FROM centos
  2. MAINTAINER zhangdx<49924009@qq.com>
  3. #把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下
  4. #COPY c.txt /usr/local/cincontainer.txt
  5. #把java与tomcat添加到容器中
  6. ADD jdk-8u271-linux-x64.tar.gz /usr/local/
  7. ADD apache-tomcat-9.0.41.tar.gz /usr/local/
  8. #安装vim编辑器
  9. RUN yum -y install vim
  10. #设置工作访问时候的WORKDIR路径,登录落脚点
  11. ENV MYPATH /usr/local
  12. WORKDIR $MYPATH
  13. #配置java与tomcat环境变量
  14. ENV JAVA_HOME /usr/local/jdk1.8.0_271
  15. ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  16. ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.41
  17. ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.41
  18. ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
  19. #容器运行时监听的端口
  20. EXPOSE 8080
  21. #启动时运行tomcat
  22. # ENTRYPOINT ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh" ]
  23. # CMD ["/usr/local/apache-tomcat-9.0.8/bin/catalina.sh","run"]
  24. CMD /usr/local/apache-tomcat-9.0.41/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.41/bin/logs/catalina.out

3,构建

docker build -f Dcokerfile文件 -t 新镜像名字:TAG .
如果Dockerfile文件的默认名为Dockerfile 构建命令时可以不用加 -f 文件地址
eg : docker build -f /mydockerfile/Dockerfile-tomcat -t zhangdx/tomat9:1.0 . →最后一个.代表当前路径
image.png
image.png

4,运行

创建Tomcat容器时,创建了两个容器数据卷
① /dataVolume-tomcat9/tomcat9/test 以后项目发布到test里
② /dataVolume-tomcat9/tomcat9/tomcat9logs 日志
eg:docker run -d -p 8080:8080 —name tomcat9 -v /dataVolume-tomcat9/tomcat9/test:/usr/local/apache-tomcat-9.0.41/webapps/test -v /dataVolume-tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.41/logs —privileged=true zhangdx/tomcat9:1.0

  1. docker run -d -p 8080:8080 --name tomcat9 -v /dataVolume-tomcat9/tomcat9/test:/usr/local/apache-tomcat-9.0.41/webapps/test -v /dataVolume-tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.41/logs --privileged=true zhangdx/tomcat9:1.0

image.png

5,完成

image.png

4,测试项目

1,增加测试项目

在目录/dataVolume-tomcat9/tomcat9/test 下创建文件夹WEB-INF和index.jsp, 并在WEB-INF文件夹中创建 web.xml
image.png
web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  5. id="WebApp_ID" version="2.5">
  6. <display-name>test</display-name>
  7. </web-app>

index.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title>Insert title here</title>
  7. </head>
  8. <body>
  9. -----------welcome------------
  10. <%="i am in docker tomcat self "%>
  11. <br><br>
  12. <% System.out.println("=============docker tomcat self");%>
  13. </body>
  14. </html>

Tomcat 容器中的开情况
image.png

2,重启Tomcat容器

docker restart 9a785a9b6b0e
image.png

3,结果

image.png

4,日志

在/dataVolume-tomcat9/tomcat9/tomcat9logs 中查看日志
image.png
cat catalina.out 查看日志
image.png