vlambda博客
学习文章列表

【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.txtCOPY a.txt /usr/local/container.txt#将apache和jdk的压缩包添加到容器的/usr/local目录下,添加过程中解压ADD apache-tomcat-10.0.18.tar.gz /usr/localADD jdk-18_linux-x64_bin.tar.gz /usr/local#运行yum命令安装vimRUN yum install -y vim#设置环境变量,将MY_PATH设置为/usr/localENV MY_PATH=/usr/local#设置工作目录WORKDIR $MY_PATH#设置jdk和tomcat的环境变量ENV JAVA_HOME /usr/local/jdk-18ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-10.0.18ENV CATALINA_BASE /usr/local/apache-tomcat-10.0.18ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin#声明容器运行的监听端口为8080EXPOSE 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

    [root@centos tomcat]# docker build -f dockerfile -t 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
  • 查看容器已经处于运行状态

[root@centos tomcat]# docker psCONTAINER 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版本

[root@centos tomcat]# docker exec 4aacb63cb82d java -versionjava 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的内容如下:

<?xml version="1.0" encoding="UTF-8"?><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"%><!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>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页面

刷新几次页面后查看后台输出结果