运行tomcat镜像报错找不到setclasspath.sh

运动tomcat容器报错​

Cannot find /usr/local/tomcat/bin/setclasspath.sh
This file is needed to run this program

从dockerhub官方拉的镜像,按理说应该不会是没有这个文件,/bin/bash启动了一下,将/usr/local/tomcat路径下的文件cp到本机,发现setclasspath.sh存在​

docker cp 容器TD:/usr/local/tomcat /data/tomcat1

但是为什么找不到呢

看到了这个文章,就试了一下,问题解决了

https://blog.csdn.net/gsls200808/article/details/126460203

问题如下:

在catalina.sh脚本中,导致问题的部分如下:

  if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
    . "$CATALINA_HOME"/bin/setclasspath.sh
  else
    echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
    echo "This file is needed to run this program"

[-r]这个命令表示测试文件是否只读,类似[-x]测试这个文件是否可执行

在此docker中,-r命令调用不正常

解决方法

1、--privileged运行容器(暂时针对性解决这个问题)

docker run --privileged=true  tomcat:8

2、更新 runc >= 1.0.0-rc93

下载地址:

https://github.com/opencontainers/runc/releases/

​可以直接下载包,也可以下载源码,在本地make,此次是在本地make(本次make需要用到go、git,先确保已安装)​

cd /data/make
git clone https://github.com/opencontainers/runc.git
cd runc
make

​会生成一个runc的可执行文件​

备份并更换runc​

whereis runc  
mv /usr/bin/runc /usr/bin/runc.bak   #备份原runc文件
cd /data/make/runc/
cp runc  /usr/bin/runc 
systemctl restart docker            #重启docker

runc的版本已经更新

然后再运行,就正常运行啦

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值