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

k8s:离线部署tomcatV11.0.9,报Cannot find /opt/bitnami/tomcat/bin/setclasspath.sh

本文记录了在离线环境下部署Tomcat容器时遇到的权限问题及解决方案。在Docker环境中运行Tomcat时出现"找不到setclasspath.sh"错误,通过添加--security-opt seccomp=unconfined参数解决。在Kubernetes环境中部署时出现相同问题,通过设置containerSecurityContext.seccompProfile.type=Unconfined解决。文章对比了Unconfined和RuntimeDefault两种seccomp

一、离线环境


CPU:Hygon C86 7285 32-core Processor
操作系统:麒麟操作系统
containerd:1.7.27
Kubernetes:1.26.12
KubeSphere:4.1.2
kubekey:3.1.10
Harbor:2.13.1

二、docker下的现象

执行如下代码:

docker run -dit \

  --name tomcat \

  -p 8084:8080 \

  -e TOMCAT_USERNAME=admin \

  -e TOMCAT_PASSWORD=Sinops1234 \

  bitnami/tomcat:latest

 报如下错误:

Cannot find /opt/bitnami/tomcat/bin/setclasspath.sh

原因:

   权限不够。

解决方案:

docker run -dit \

  --name tomcat \

  -p 8084:8080 \

  --security-opt seccomp=unconfined \

  -e TOMCAT_USERNAME=admin \

  -e TOMCAT_PASSWORD=Sinops1234 \

  bitnami/tomcat:latest

 

特性

apparmor:unconfined

seccomp=unconfined

所属模块

AppArmor

seccomp

控制内容

文件路径、网络访问、权限等

系统调用(syscalls)

用途

限制程序对系统资源的访问

限制程序能执行的底层系统操作

安全影响

更细粒度的访问控制

防止危险系统调用被执行

默认行为

Docker 会应用默认 AppArmor profile(如果启用)

Docker 默认启用 seccomp,限制部分危险 syscall

何时使用

容器无法访问特定文件或资源

容器因系统调用失败而崩溃

三、k8s下的现象 

执行如下命令:

helm install tomcat ./tomcat-12.0.0.tgz \

  --namespace default \

  --set image.registry=172.23.123.117:8443 \

  --set image.repository=library/bitnami/tomcat \

  --set image.tag=latest \

  --set image.pullPolicy=IfNotPresent \

--set image.pullSecrets=sinopsreg \

  --set global.security.allowInsecureImages=false \

  --set usePasswordFiles=false \

  --set existingSecret=tomcat-secrets \

  --set secretKeys.adminUsernameKey=tomcat-username \

  --set secretKeys.adminPasswordKey=tomcat-password

 

报如下错误:

Cannot find /opt/bitnami/tomcat/bin/setclasspath.sh

原因:

   权限不够。

解决方案:

helm install tomcat ./tomcat-12.0.0.tgz \

  --namespace default \

  --set image.registry=172.23.123.117:8443 \

  --set image.repository=library/bitnami/tomcat \

  --set image.tag=latest \

  --set image.pullPolicy=IfNotPresent \

--set image.pullSecrets=sinopsreg \

  --set global.security.allowInsecureImages=false \

  --set usePasswordFiles=false \

  --set existingSecret=tomcat-secrets \

  --set secretKeys.adminUsernameKey=tomcat-username \

  --set secretKeys.adminPasswordKey=tomcat-password \

  --set containerSecurityContext.seccompProfile.type=Unconfined

Unconfined:当你设置 seccompProfile.type: Unconfined,这意味着禁用了 Seccomp 安全策略,允许容器内的进程执行所有系统调用。这种方式提供了最大的灵活性,但也降低了安全性。

RuntimeDefault:相比之下,使用 "RuntimeDefault" 提供了一定程度的安全性提升,因为它限制了容器能够执行的系统调用,减少了潜在攻击面。

 

http://www.lryc.cn/news/596135.html

相关文章:

  • 中国在远程医疗智能化方面有哪些特色发展模式?
  • 公交车客流人数统计管理解决方案:智能化技术与高效运营实践
  • DAY20 奇异值SVD分解
  • 【bug】Yolo11在使用tensorrt推理numpy报错
  • 【数据可视化-70】奶茶店销量数据可视化:打造炫酷黑金风格的可视化大屏
  • 使用qt编写上位机程序,出现串口死掉无法接受数据的bug
  • vue2 webpack 部署二级目录、根目录nginx配置及打包配置调整
  • 【深度解析】从AWS re_Invent 2025看云原生技术发展趋势
  • kafka主题管理详解 - kafka-topics.sh
  • C++ 结构体(struct)与联合体(union)
  • 逻辑回归全景解析:从数学本质到工业级优化
  • AWS PrivateLink方式访问Redis
  • NIO技术原理以及应用(AI)
  • AWS RDS 排查性能问题
  • 图像基础:从像素到 OpenCV 的入门指南
  • 基于python django深度学习的中文文本检测+识别,可以前端上传图片和后台管理图片
  • 【学习路线】Python全栈开发攻略:从编程入门到AI应用实战
  • Spring 核心知识点梳理 1
  • 2.9学习DOM和BOM (主要是获取元素的操作)
  • 【element-ui el-table】多选表格勾选时默认勾选了全部,row-key绑定异常问题解决
  • 重塑优化建模与算法设计:2025年大模型(LLM)在优化领域的应用盘点 - 1
  • MybatisPlus-16.扩展功能-枚举处理器
  • SpringMVC快速入门之核心配置详解
  • 【windows修复】解决windows10,没有【相机] 功能问题
  • Azure可靠性架构指南:构建云时代的高可用系统
  • xss-labs解答
  • 本地数据库有数据,web页面无信息显示,可能是pymysql的版本问题【pymysql连接本地数据库新旧版本的区别】
  • 【51单片机定时器T0输出10毫秒周期方波12M晶振】2022-6-28
  • Web开发 05
  • verilator如何实现RTL的仿真(腾讯混元)