码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 记一次正式环境升级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基础镜像自定义了一个空容器以便检查容器内部情况:

    1. FROM tomcat:9-jdk21-openjdk-slim
    2. 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命令都无异常,但是手动输入

    1. if [ -r /usr/local/tomcat/bin/setclasspath.sh ]; then
    2. echo "The file is readable"
    3. else
    4. echo "The file is not readable"
    5. 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中依赖的系统版本差异导致部分基础命令异常的猜测。

  • 相关阅读:
    FT232替代GP232RL USB-RS232转换器芯片国产化应用
    oracle学习43-oracle导出空表
    【软件测试】初识测试
    windows桌面程序与服务程序通过公共文件目录交互
    input()函数——输入
    wps/word 如何让表格的标题和表格名称文本(表1-1 xxx)跨页显示(已解决)
    CesiumJS 2022^ 原理[4] - 最复杂的地球皮肤 影像与地形的渲染与下载过程
    ESP32网络开发实例-Web服务器RGB LED调光
    怎么用手机压缩图片?教给大家三种手机压缩图片方法
    栈的概念|动态顺序栈的详细解析|静态顺序栈&链式栈的代码参考
  • 原文地址:https://blog.csdn.net/u011649691/article/details/133353652
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号