docker制作tomcat镜像方法及异常处理

 更新时间:2025年08月28日 09:35:14   作者:风逸柏  
在Docker中创建一个Tomcat镜像是一个常见的需求,尤其是在开发、测试和部署Java Web应用程序时,这篇文章主要介绍了docker制作tomcat镜像方法及异常处理的相关资料,需要的朋友可以参考下

【说明】

制作tomcat镜像,需要在官网下载tomcat binary压缩包。

tomcat官网:https://tomcat.apache.org/download-90.cgi

【配置方法】

  1. 新建一个/opt/tomcat/目录,将下载tomcat与jdk安装包上传并解压缩:
# mkdir -p  /opt/tomcat;   cd  /opt/tomcat
#ls 
apache-tomcat-9.0.93.tar.gz     jdk-8u144-linux-x64.tar.gz   Kylin-Server-V10-SP3-2403-Release-Docker-init-20240426-X86_64.tar.xz
# tar -zxvf  apache-tomcat-9.0.93.tar.gz
# tar -zxvf  jdk-8u144-linux-x64.tar.gz
  1. 提供制作镜像的base镜像,此次使用Kylin-Server-V10-SP3-2403-Release-Docker-init-20240426-X86_64.tar.xz
# docker load  -i  Kylin-Server-V10-SP3-2403-Release-Docker-init-20240426-X86_64.tar.xz
# docker images
[root@localhost tomcat]# docker images
REPOSITORY                                                                        TAG                 IMAGE ID            CREATED             SIZE
cr.kylinos.cn/v10sp3-2403/kylin-server-v10-sp3-2403-general-alpha20-x86_64-init   202405              6bd24f9f88c3        3 months ago        246MB
  1. 在当前目录下创建一个Dockerfile文件
# vim Dockfile
FROM cr.kylinos.cn/v10sp3-2403/kylin-server-v10-sp3-2403-general-alpha20-x86_64-init:202405

MAINTAINER xiongle

LABEL description="This is tomcat9.0.93 image" \
      Tomcat.Version="9.0.93" \
      OS.Version="Kylin-Server-V10-SP3-2403" \
      JDK.Version="OpenJDK Runtime Environment (Alibaba Dragonwell 8.7.7) (build 1.8.0_292-b01)" \
      mail="zhongjianjian@ceair.com"

ADD jdk-8u144-linux-x64.tar.gz  /opt/
ADD apache-tomcat-9.0.93.tar.gz /opt/

ENV JAVA_HOME /opt/jdk1.8.0_144
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /opt/apache-tomcat-9.0.93
ENV CATALINA_BASE /opt/apache-tomcat-9.0.93
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

RUN chmod +x /opt/apache-tomcat-9.0.93/bin/catalina.sh

EXPOSE 8080

CMD /opt/apache-tomcat-9.0.93/bin/catalina.sh run
  1. 通过docker build构建镜像
# docker build  -t  tomcat:9.0.93  .
  1. 运行容器
# docker images
REPOSITORY                                                                        TAG                 IMAGE ID            CREATED             SIZE
tomcat                                                                            9.0.93              3468b888f5b1        2 hours ago         639MB
cr.kylinos.cn/v10sp3-2403/kylin-server-v10-sp3-2403-general-alpha20-x86_64-init   202405              6bd24f9f88c3        3 months ago        246MB

# docker run -d  --name test1  -p 8060:8080   tomcat:9.0.93

# docker logs test1
Using CATALINA_BASE:   /opt/apache-tomcat-9.0.93
Using CATALINA_HOME:   /opt/apache-tomcat-9.0.93
Using CATALINA_TMPDIR: /opt/apache-tomcat-9.0.93/temp
Using JRE_HOME:        /opt/jdk1.8.0_144
Using CLASSPATH:       /opt/apache-tomcat-9.0.93/bin/bootstrap.jar:/opt/apache-tomcat-9.0.93/bin/tomcat-juli.jar
Using CATALINA_OPTS:
02-Sep-2024 15:20:22.501 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.93
02-Sep-2024 15:20:22.503 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Aug 2 2024 21:24:59 UTC
02-Sep-2024 15:20:22.504 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.93.0
02-Sep-2024 15:20:22.504 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
02-Sep-2024 15:20:22.504 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.19.90-52.22.v2207.ky10.x86_64

# docker  ps  -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
40e062400da6        tomcat:9.0.93       "/bin/sh -c '/opt/ap…"   2 hours ago         Up 2 hours          0.0.0.0:8060->8080/tcp   test1

# curl  localhost:8060
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/9.0.93</title>
        <link href="favicon.ico" rel="external nofollow"  rel="icon" type="image/x-icon" />
        <link href="tomcat.css" rel="external nofollow"  rel="stylesheet" type="text/css" />
    </head>

    <body>
        <div id="wrapper">
            <div id="navigation" class="curved container">
                <span id="nav-home"><a href="https://tomcat.apache.org/" rel="external nofollow" >Home</a></span>
                <span id="nav-hosts"><a href="/docs/" rel="external nofollow" >Documentation</a></span>
                <span id="nav-config"><a href="/docs/config/" rel="external nofollow" >Configuration</a></span>
                <span id="nav-examples"><a href="/examples/" rel="external nofollow" >Examples</a></span>
                <span id="nav-wiki"><a href="https://cwiki.apache.org/confluence/display/TOMCAT/" rel="external nofollow" >Wiki</a></span>
                <span id="nav-lists"><a href="https://tomcat.apache.org/lists.html" rel="external nofollow" >Mailing Lists</a></span>
                <span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html" rel="external nofollow" >Find Help</a></span>
                <br class="separator" />
            </div>
            <div id="asf-box">
                <h1>Apache Tomcat/9.0.93</h1>
            </div>
            <div id="upper" class="curved container">
                <div id="congrats" class="curved container">
                    <h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
                </div>

【异常处理】

问题1:/opt/apache-tomact-9.0.50/bin/catalina.sh: permission denied.

解决方案:程序没权限执行catalina.sh脚本。在Dockerfile中新增一行:RUN chmod +x /opt/apache-tomcat-9.0.93/bin/catalina.sh

问题2:Error: Could not find or load main class org.apache.catalina.startup.Bootstrap

解决方案:构建镜像用的tomcat.tar.gz是src源码包,需要使用binary包。

总结

到此这篇关于docker制作tomcat镜像方法及异常处理的文章就介绍到这了,更多相关docker制作tomcat镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker部署MySQL 多库自动备份的方法(结构+数据完整,适配CentOS)

    Docker部署MySQL 多库自动备份的方法(结构+数据完整,适配CentOS)

    本文介绍了在CentOS服务器上使用Docker部署MySQL实现多库备份的方法,包括创建备份脚本、添加执行权限、测试脚本、配置定时任务、测试验证、正式环境配置和备份恢复等步骤,并提供了避坑指南,感兴趣的朋友跟随小编一起看看吧
    2026-04-04
  • Docker中Harbor企业级镜像仓库的搭建与使用

    Docker中Harbor企业级镜像仓库的搭建与使用

    本文介绍了Harbor企业级镜像仓库的搭建与使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • docker desktop部署从Linux服务器保存的镜像tar包详解

    docker desktop部署从Linux服务器保存的镜像tar包详解

    在Docker Desktop中部署Linux服务器的tar镜像,需传输文件、使用docker load导入并运行容器,实现跨环境镜像迁移与部署
    2025-09-09
  • 基于Docker的可持续交付问题

    基于Docker的可持续交付问题

    这篇文章主要介绍了基于Docker的可持续交付问题,本文章系列中主要结合CI持续集成的工具,把这个过程完全的自动化,以及智能化的过程。当然,使用的技术栈主要是Spring Boot,具体内容详情跟随小编一起看看吧
    2022-01-01
  • docker打包本地conda虚拟环境并远程部署的详细过程

    docker打包本地conda虚拟环境并远程部署的详细过程

    这篇文章给大家介绍docker打包本地conda虚拟环境并远程部署的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2026-03-03
  • 教你使用docker查看运行中的容器

    教你使用docker查看运行中的容器

    这篇文章主要介绍了使用docker查看运行中的容器,本文内容简单给大家讲解的很明白,对docker查看运行的容器相关知识感兴趣的朋友一起看看吧
    2022-04-04
  • docker cp 拷贝文件 和 进入容器的操作

    docker cp 拷贝文件 和 进入容器的操作

    这篇文章主要介绍了docker cp 拷贝文件 和 进入容器的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 浅析Docker镜像分层的注意事项

    浅析Docker镜像分层的注意事项

    不知道大家在对程序进行Docker镜像打包会不会有些疑惑,比如镜像分层打包最后汇总成程序的镜像问题,所以这篇针对一些问题进行了分析,文章主要介绍了Docker镜像分层的一些注意事项,有需要的朋友们可以参考学习,下面来一起看看吧。
    2016-10-10
  • Docker Swarm 服务编排之命令详解

    Docker Swarm 服务编排之命令详解

    在Docker Swarm集群中,使用stack服务编排搭建lnmp来部署WordPress非常的方便,今天小编重点给大家介绍Docker Swarm 服务编排之命令详解,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • 关于docker可视化管理工具-DockerUI的安装

    关于docker可视化管理工具-DockerUI的安装

    这篇文章主要介绍了关于docker可视化管理工具-DockerUI的安装,DockerUI是一款开源强大的轻量级Docker管理工具,还不了解这款工具的朋友一起来看看吧
    2023-03-03

最新评论