编写Dockerfile制作tomcat镜像,生成镜像名为tomcat:v1,并推送到私有仓库。

devtools/2025/3/13 8:32:10/

1.具体要求如下:

  •     基于rockylinux:8基础镜像; 
  •     指定作者为openlab;
  •     安装tomcat服务,暴露8080端口;
  •     设置服务自启动。

总结步骤:基于rockylinux:8,安装Java环境,安装Tomcat,配置,暴露端口,设置启动命令,然后构建镜像,打标签,推送到私有仓库。

宿主机:

创建tomcat目录并进入: mkdir tomcat  ;  cd tomcat

2.下载所需文件(jdk和tomcat)

apache-tomcat-9.0.102.tar.gz   和  jdk-8u261-linux-x64.rpm

3、编写Dockerfile
    
    FROM rockylinux:8
    MAINTAINER openlab <openlab@123.com>

    

FROM rockylinux:8
MAINTAINER openlab <openlab@123.com>
COPY  jdk-8u261-linux-x64.rpm /opt/jdk-8u261-linux-x64.rpm
ADD apache-tomcat-9.0.102.tar.gz /usr/local
RUN yum install -y /opt/jdk-8u261-linux-x64.rpm && ln -s /usr/local/apache-tomcat-9.0.102 /usr/local/tomcat
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]

4、制作镜像

    docker build -t tomcat:v1 .

5、测试镜像

docker run -d --name a1 -p 8080:8080 tomcat:v1

执行后,通过docker ps -a 查看 发现容器未启动

排查方法:
    查看日志  docker logs c1 
    ...
    library initialization failed - unable to allocate file descriptor table - out of memory
    
    内存溢出,错误原因通常是由于系统资源不足,特别是文件描述符(file descriptor, FD)的数量不足


解决方法:
    方法1: 在执行 docker run 命令时添加参数 --ulimit nofile=65535:65535 --ulimit nproc=65535:65535
        docker run  -d -p 8080:8080  --ulimit nofile=65535:65535 --ulimit nproc=65535:65535  tomcat:v1


        
    

       方法2: 修改docker服务脚本
         vim /usr/lib/systemd/system/docker.service

        在`ExecStart`参数值后面追加 `--default-ulimit nofile=65535:65535`,这样就能为创建的容器设置一个较高的文件描述符限制了。

        编辑完成后,重新加载systemd的配置,并重启Docker服务:
        输入以下命令:
            systemctl daemon-reload
            systemctl restart docker

然后再进行测试

6.标记镜像为私有仓库格式

 docker tag   tomcat:v1   192.168.234.15:5050/openlab/tomcat:v1

7.登录到私有仓库并推送镜像

docker login 192.168.234.15:5050

docker push 192.168.234.15:5050/tomcat:v1

推送成功!!!


 


http://www.ppmy.cn/devtools/166723.html

相关文章

批量将多个 CSV 合并成单个文件|按文件夹批量合并 CSV 文件

文档合并的拆分需求在我们工作当中是非常常见的&#xff0c;CSV 格式的文档也是我们工作当中经常要面对要处理的一种文档格式。它相对于 Excel 文档来说更加的轻便&#xff0c;更加的灵活。前面我们也介绍过如何将 CSV 格式的文档拆分成多个文档&#xff0c;那今天我们要介绍的…

CSDN博客:Markdown编辑语法教程总结教程(下)

❤个人主页&#xff1a;折枝寄北的博客 Markdown编辑语法教程总结 前言1. LaTex数学公式2. 插入不同类别的图2.1 插入甘特图2.2 插入UML图2.3 插入Mermaid流程图2.4 插入Flowchart流程图2.5 插入classDiagram类图 3. CSDN快捷键4. 字体相关设置4.1 字体样式改变4.2 字体大小改变…

C语言每日一练——day_5

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第五天。&#xff08;连续更新中&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff09;是一种在编程竞赛中用…

【LeetCode222】完全二叉树的节点个数

题目描述 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在该层最左边的若干…

Java Lambda表达式:现代编程的简洁之道

引言 在Java 8中&#xff0c;Lambda表达式的引入标志着Java语言向函数式编程迈出了重要一步。Lambda不仅简化了代码结构&#xff0c;还提升了开发效率&#xff0c;使得Java能够更灵活地应对现代编程需求。本文将深入探讨Lambda表达式的核心概念、语法规则、应用场景及其对Java…

P2P:从点监督到显式视觉提示的物体检测与分割

一、简介 论文题目&#xff1a;P2P: Transforming from Point Supervision to Explicit Visual Prompt for Object Detection and Segmentation 论文下载地址&#xff1a;https://www.ijcai.org/proceedings/2024/0448.pdf 项目代码&#xff1a;GitHub - guangqian-guo/P2P:…

SpringBoot基础Kafka示例

这里将生产者和消费者放在一个应用中 使用的Boot3.4.3 引入Kafka依赖 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId> </dependency>yml配置 spring:application:name: kafka-1#kafka…

WPF基础知识41-60

动画与多媒体拓展 41. 如何实现一个复杂的组合动画&#xff0c;包含多个动画效果同时或顺序执行&#xff1f; 答案&#xff1a;可以使用 Storyboard 来组合多个动画效果。Storyboard 可以包含多个不同类型的动画&#xff08;如 DoubleAnimation、ColorAnimation 等&#xff09…