记一次正式环境升级docker服务基础进行版本异常

这篇具有很好参考价值的文章主要介绍了记一次正式环境升级docker服务基础进行版本异常。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

因为服务的httpd和tomcat基础镜像版本比较旧,漏洞多,需要升级至最新版本。在本地环境和测试环境都是直接将dockerfile中的FROM基础镜像升级至最新:

httpd:由httpd:2.4.52-alpine升级至httpd:2.4.57

tomcat:由4年前的tomcat:last升级至tomcat:9-jdk21-openjdk-slim

但是在正式环境docker容器都启动失败:

其中tomcat报错:canot find /usr/local/tomcat/bin/setclasspath.sh

httd容器报错:线程无权启动

在报错的服务器上使用tomcat基础镜像自定义了一个空容器以便检查容器内部情况:

FROM tomcat:9-jdk21-openjdk-slim
CMD ["/bin/bash", "-c", "while true; do sleep 1; done"]

检查结果发现,报错的文件 /usr/local/tomcat/bin/setclasspath.sh存在,检查启动文件/usr/local/tomcat/bin/catalina.sh,发现了报错的原因是在判断语句

if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then

返回了false导致报错和服务终止。通过ls -l命令检查了一下用户组和文件的权限,发现是root用户、文件权限为-rwxr-xr-x,理论上说docker容器默认就是root用户,继续对setclasspath.sh使用cat命令和sh命令都无异常,但是手动输入

if [ -r /usr/local/tomcat/bin/setclasspath.sh ]; then
    echo "The file is readable"
else
    echo "The file is not readable"
fi

返回的结果就是The file is not readable,证明容器中if -r命令返回结果异常。感觉是基础镜像中的权限命令似乎出现异常,使用--privileged再次启动容器,再次手动输入上述命令,返回The file is readable,结果正常。对http容器,启动时也添加--privileged参数后,启动正常。

因为--privileged参数会增大宿主机的安全风险,所以继续探究更好的解决方案,猜测基础容器的部分命令可能跟宿主机不兼容导致,遂测试多个镜像版本,发现基于更旧系统的tomcat:9.0.80-jdk8-corretto-al2和httpd:2.4.57-bullseye能够满足无--privileged参数正常启动的要求,更加确定了是因为httpd和tomcat中依赖的系统版本差异导致部分基础命令异常的猜测。文章来源地址https://www.toymoban.com/news/detail-729424.html

到了这里,关于记一次正式环境升级docker服务基础进行版本异常的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记一次docker启动失败的问题排查

    以前在虚拟机上安装了一个docker,可以正常使用的,今天突然宿主机机器内存条坏了,换了内存条后启动机器,再使用 systemctrl start docker 启动docker,最后使用 docker start containID 启动报错 网上没有找到相应的描述,仔细分析看是 write /proc/sys/kernel/shmmni 报错了,错误原因是 in

    2024年02月14日
    浏览(51)
  • 记一次docker安装elasticsearch遇到的坑

    标题docker-compose安装elasticsearch7.6.2 解压elasticsearch7.6.2.zip到elasticsearch的plugins: 运行后报错信息: 既然报这个错,就查看这个文件 解决方法:在plugins中新建文件件,名字为analysis-ik,将所有plugins下的elasticsearch文件移动到analysis-ik下面,再次运行docker restart elasticsearch 成功!

    2024年02月12日
    浏览(34)
  • 记一次docker-compose的坎坷安装经历

            最近公司在做一个kafka项目,所以想用docker来安装kafka集群,所以安装完docker后就准备安装docker-compose,但在安装过程中确碰到了各种问题,搞了两个半天再通过翻墙工具才终于搞定。         首先看了篇文章显示安装前要对应docker版本。 compose文件格式版本

    2024年02月11日
    浏览(30)
  • 记一次docker安装kafka,zookeeper拒绝连接的问题

    第一次玩kafka,在使用docker安装kafka时,出现了如下问题 kafka的启动参数KAFKA_ZOOKEEPER_CONNECT不能是localhost:2181,因为不是在一个容器中,localhost改为ip地址就可以了 nc 命令连接到 localhost:2181,确保ZooKeeper 服务器正在监听该地址,并且可以通过网络进行访问 定位的过程中还遇到了

    2024年02月10日
    浏览(50)
  • 记一次MOXA串口服务器使用

    AIS船台——天线——AIS基站——网线——交换机——服务器 AIS船台——天线——AIS基站——串口线——串口服务器——网线——交换机——服务器 串口线分为RS-485、RS-422、RS-232,此处以RS-232为例 串口线:一端为RS232连接头,用于连接串口服务器 一端为裸露的电线纤芯头,用

    2024年02月03日
    浏览(67)
  • 记一次linux系统使用dockerfile编写容器支持中文字体环境

    今天研发开发一个网上受理需要容器支持中文环境否则服务启动起来会出现中文乱码。 解决思路: 1、先把jar把在本地环境直接加参数运行如果运行起来无乱码说明本地的字体文件就可以直接COPY到容器中使用,如果还是乱码就说明本地的字体文件不支持中文环境,就需要下载

    2024年02月09日
    浏览(39)
  • 记一次 RestTemplate 请求失败问题的排查 → RestTemplate 默认会对特殊字符进行转义

    今天中午,侄子在沙发上玩手机,他妹妹屁颠屁颠的跑到他面前 小侄女:哥哥,给我一块钱 侄子:叫妈给你 小侄女朝着侄子,毫不犹豫的叫到:妈! 侄子:不是,叫妈妈给你 小侄女继续朝他叫到:妈妈 侄子受不了,从兜里掏出一块钱说道:我就只有这一块钱了,拿去拿去

    2024年02月05日
    浏览(41)
  • 记一次heapdump泄漏获取服务器权限

    一、漏洞原因 扫描目录发现某个spring框架存在大量泄露信息的路径,访问ip/heapdump可直接下载内存文件; 通过分析heapdump获取redis数据库权限 利用定时任务,进行反弹shell获取服务器权限 二、漏洞利用 1、通过目录扫描发现heapdump文件

    2024年02月02日
    浏览(53)
  • 记一次问题解决:通过http启动docker容器报500错误

    问题描述 在打开防火墙的情况下,通过http启动docker容器报500错误 解决过程 1.查看2375端口是否开放 2.检查外部网络是否可以访问服务器 直接在浏览器输入 http://192.xxx.xxx.xxx:2375/containers/json?all=true 看是否有返回 结果是有返回,代表外部网络连接服务器没问题 3.查看ip转发 坑

    2024年02月13日
    浏览(46)
  • 记一次1Panel面板安装mysql(docker报错的问题)

    在centos上安装了1Panel控制面板之后,利用该面板安装mysql时候报了个错误 错误如下 最后更换了下docker的源,成功解决问题 命令如下: 问题成功解决  

    2024年02月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包