1,DockerFile体系结构(保留字指令)
2,案例
1,Base镜像(scratch)
Docker Hub中99%的镜像都是通过在Base镜像中安装和配置需要的软件构建出来的
2,自定义镜像myCentOS
1,编写
① Hub默认CentOS默认情况
② 新建编写Dockerfile文件目录和文件
mkdir -p /mydockerfilevim Dockerfile
③ Dockerfile 内容
FROM centosMAINTAINER zhangdx<49924009@qq.com>ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vimRUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATHCMD echo "success--------------OK"CMD /bin/bash
2,构建
docker build -f Dcokerfile文件 -t 新镜像名字:TAG .
如果Dockerfile文件的默认名为Dockerfile 构建命令时可以不用加 -f 文件地址
eg : docker build -f /mydockerfile/Dockerfile -t zhangdx/mycentos1.0 . →最后一个.代表当前路径
3,运行
eg:docker run -it 260ddab51a00 →260ddab51a00 自定义的mycentos1.0s
4,列出镜像的变更历史
docker history 镜像名
eg:docker history 260ddab51a00 →260ddab51a00 自定义的mycentos1.0
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文件目录和文件
mkdir -p /mydockerfilevim Dockerfile_tomcat
b,将JDK和Tomcat拷贝到上一步的目录(mydockerfile)
c,Dockerfile-tomcat 内容
FROM centosMAINTAINER zhangdx<49924009@qq.com>#把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下#COPY c.txt /usr/local/cincontainer.txt#把java与tomcat添加到容器中ADD jdk-8u271-linux-x64.tar.gz /usr/local/ADD apache-tomcat-9.0.41.tar.gz /usr/local/#安装vim编辑器RUN yum -y install vim#设置工作访问时候的WORKDIR路径,登录落脚点ENV MYPATH /usr/localWORKDIR $MYPATH#配置java与tomcat环境变量ENV JAVA_HOME /usr/local/jdk1.8.0_271ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-9.0.41ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.41ENV 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.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 . →最后一个.代表当前路径
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
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
5,完成
4,测试项目
1,增加测试项目
在目录/dataVolume-tomcat9/tomcat9/test 下创建文件夹WEB-INF和index.jsp, 并在WEB-INF文件夹中创建 web.xml
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><display-name>test</display-name></web-app>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>-----------welcome------------<%="i am in docker tomcat self "%><br><br><% System.out.println("=============docker tomcat self");%></body></html>
2,重启Tomcat容器
3,结果
4,日志
在/dataVolume-tomcat9/tomcat9/tomcat9logs 中查看日志
cat catalina.out 查看日志

