当前位置: 首页 > news >正文

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

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.dtcms.com/a/64378.html

相关文章:

  • Cursor初体验:excel转成CANoe的vsysvar文件
  • spring事务失效的12种场景
  • Deepseek -> 如何在PyTorch中合并张量
  • cesium安装与配置(visual studio版)
  • Linux运维篇-ubuntu22.04及以上版本操作系统配置静态IP
  • 如何搭建一个适配微信小程序,h5,app的工程
  • Matlab深度学习ResNet、迁移学习多标签图像分类及超分辨率处理Grad CAM可视化分析COCO、手写数字数据集...
  • 随机种子的使用
  • Maven工具基础知识(一)
  • 蓝桥杯 C++ b组李白打酒加强版,动规及dfs+记忆化搜索双解
  • 机器学习框架
  • 31页PPT解析数据湖架构、数据湖和数据仓库的区别、湖仓一体化湖仓一体建设解决方案
  • 短视频下载去水印,用什么工具好?
  • 应用于稳态电池模块的 Fluent 等效电路模型
  • 双周报Vol.67: 模式匹配支持守卫、LLVM 后端发布、支持 Attribute 语法...多项核心技术更新!
  • 修复Electron项目Insecure Content-Security-Policy(网络安全策略CSP)警告的问题
  • AD21 PCB中无法选中元器件怎么办?
  • 《历史代码分析》5、动态控制列表的列
  • Java CAS(Compare-And-Swap)概念及原理
  • 程序代码篇---STM32串口通信
  • 18 | 实现简洁架构的 Handler 层
  • 【MySQL是怎么运行的】0、名词解释
  • NetworkManager服务与network服务的区别
  • 机器人路径规划、轨迹优化系列课程
  • Taro-Bluetooth-Print:让蓝牙打印也充满乐趣的开发组件库
  • STL —— 核心组成部分和特性概述
  • uniapp uview 1.0 跨域h5配置多个代理、如何请求接口
  • JavaWeb项目实际部署流程
  • CPS-J/S冲奖第15天:真题解析
  • Spring Boot集成Spring Statemachine