【Docker】自定义Dockerfile构建镜像实例
制作自己的tomcat镜像
- 创建tomcat物理机工作路径/lyuse/mydocker/tomcat,并进入该目录 - [root@centos ~]# mkdir -p /lyuse/mydocker/tomcat- [root@centos ~]# cd /lyuse/mydocker/tomcat
- 在该目录下创建a.txt - [root@centos tomcat]# touch a.txt
- 将tomcat和jdk的安装包下载到上述目录 
- 上述目录下创建dockerfile文件,dockerfile文件内容如下: - #以centos:7作为父镜像开始构建- FROM centos:7- #将宿主机构建上下文的a.txt文档复制到容器的/usr/local/目录下并改名为container.txt- COPY a.txt /usr/local/container.txt- #将apache和jdk的压缩包添加到容器的/usr/local目录下,添加过程中解压- ADD apache-tomcat-10.0.18.tar.gz /usr/local- ADD jdk-18_linux-x64_bin.tar.gz /usr/local- #运行yum命令安装vim- RUN yum install -y vim- #设置环境变量,将MY_PATH设置为/usr/local- ENV MY_PATH=/usr/local- #设置工作目录- WORKDIR $MY_PATH- #设置jdk和tomcat的环境变量- ENV JAVA_HOME /usr/local/jdk-18- ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar- ENV CATALINA_HOME /usr/local/apache-tomcat-10.0.18- ENV CATALINA_BASE /usr/local/apache-tomcat-10.0.18- ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin- #声明容器运行的监听端口为8080- EXPOSE 8080- #启动时运行tomcat- #ENTRYPOINT ["/usr/local/apache-tomcat-10.0.18/bin/startup.sh"]- #CMD ["/usr/local/apache-tomcat-10.0.18/bin/catalina.sh","run"]- CMD /usr/local/apache-tomcat-10.0.18/bin/startup.sh && tail -F /usr/local/apache-tomcat-10.0.18/logs/catalina.out
- 将该dockerfile构建成镜像mytomcat:1.1 - []
- 运行容器 - docker run -d -p 8888:8080 --name mytomcat -v /lyuse/mydocker/tomcat/test:/usr/local/apache-tomcat-10.0.18/webapps/test -v /lyuse/mydocker/tomcat/tomcatlogs:/usr/local/apache-tomcat-10.0.18/logs --privileged=true mytomcat:1.1
- 查看容器已经处于运行状态 
[]CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES4aacb63cb82d mytomcat:1.1 "/bin/sh -c '/usr/lo…" 5 seconds ago Up 4 seconds 0.0.0.0:8888->8080/tcp mytomcat
- 浏览器验证 
- 查看jdk版本 
[]java version "18" 2022-03-22Java(TM) SE Runtime Environment (build 18+36-2087)Java HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)
- tomcat运行一个简单的页面 
在test目录下创建WEB-INFO目录和a.jsp文件,WEB-INFO目录下创建web.xml文件
web.xml的内容如下:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>test</display-name></web-app>
a.jsp的内容如下:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>test page</title></head><body>---------------welcome to test page--------------<br/><%="run in docker tomcat"%><br><br><% System.out.println("------docker tomcat-------");%></body></html>
查看容器test目录下是否有相应目录和文件
[root@centos test]# docker exec 4aacb63cb82d ls -l /usr/local/apache-tomcat-10.0.18/webapps/test重启mytomcat容器
[root@centos test]# docker restart 4aacb63cb82d网页端刷新访问a.jsp页面
刷新几次页面后查看后台输出结果
