通过Dockerfile构建的tomcat镜像,启动时报错,no such file or directory

Spring89 2018-12-18 07:39:32
通过Dockerfile构建tomcat镜像后,启动容器的时候报错:docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"sh /usr/local/apache-tomcat-8.5.34/bin/startup.sh\": stat sh /usr/local/apache-tomcat-8.5.34/bin/startup.sh: no such file or directory".

为什么会报没有这个文件啊,文件目录都是正确的,文件也存在,而且单独在容器里执行sh /usr/local/apache-tomcat-8.5.34/bin/startup.sh,是可以启动tomcat的。为什么在启动容器,去执行这个命令会报错呢?怎么就会找不到这个文件呢?

下面是Dockerfile文件,麻烦帮忙看看,这是什么原因,谢谢!
Dockerfile:
...全文
1711 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonykokhan2 2019-06-25
  • 打赏
  • 举报
回复
这个地方sh是一个软链接,“/bin/sh -> bash”,不是一个文件,所以会报找不到这个文件
tonykokhan2 2019-06-25
  • 打赏
  • 举报
回复
楼主,我也遇到了和你一样的问题,其实我们都被误导了,这个报错不是系统找不到startup.sh文件,重点是在前面,找不到sh这个文件,你换成bash就可以了
Spring89 2018-12-26
  • 打赏
  • 举报
回复
引用 8 楼 李庆海 的回复:
[quote=引用 7 楼 Spring89 的回复:]
[quote=引用 3 楼 李庆海 的回复:]
你好, tomcat镜像最后一行直接用:ENTRYPOINT ["/opt/tomcat7/bin/catalina.sh", "run"],就可以了,不用加sh


不行啊。容器启动后的状态就是exit,

[/quote]

------------------
你好,请看仔细我的命令,docker镜像中是不用startup.sh脚本的,是用catalina.sh脚本[/quote]

好的,可以了,谢谢!请问,为啥要用catalina.sh,而不能用startup.sh呢?
mouse_zhu 2018-12-24
  • 打赏
  • 举报
回复
比这个不是把mv 命令给注释了吗,所以还是 apache-tomkcat-8.5.34
李庆海 2018-12-24
  • 打赏
  • 举报
回复
引用 7 楼 Spring89 的回复:
[quote=引用 3 楼 李庆海 的回复:] 你好, tomcat镜像最后一行直接用:ENTRYPOINT ["/opt/tomcat7/bin/catalina.sh", "run"],就可以了,不用加sh
不行啊。容器启动后的状态就是exit, [/quote] ------------------ 你好,请看仔细我的命令,docker镜像中是不用startup.sh脚本的,是用catalina.sh脚本
Spring89 2018-12-24
  • 打赏
  • 举报
回复
引用 3 楼 李庆海 的回复:
你好, tomcat镜像最后一行直接用:ENTRYPOINT ["/opt/tomcat7/bin/catalina.sh", "run"],就可以了,不用加sh


不行啊。容器启动后的状态就是exit,

Spring89 2018-12-24
  • 打赏
  • 举报
回复
引用 4 楼 cqiang1993 的回复:

我比较好奇一点。。你不是mv成其他名字了吗。。为什么还能通过这个目录找到?


我把mv改名的命令,已经注释了啊
cqiang1993 2018-12-22
  • 打赏
  • 举报
回复
我比较好奇一点。。你不是mv成其他名字了吗。。为什么还能通过这个目录找到?
李庆海 2018-12-20
  • 打赏
  • 举报
回复
你好, tomcat镜像最后一行直接用:ENTRYPOINT ["/opt/tomcat7/bin/catalina.sh", "run"],就可以了,不用加sh
Spring89 2018-12-20
  • 打赏
  • 举报
回复
引用 1 楼 mouse_zhu 的回复:
把sh 去掉。之间使用绝对路径


去掉之后,用CMD的可以,但是用ENTRYPOINT却不行,知道什么原因吗?
mouse_zhu 2018-12-19
  • 打赏
  • 举报
回复
把sh 去掉。之间使用绝对路径

1,163

社区成员

发帖
与我相关
我的任务
社区描述
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux 机器上,也可以实现虚拟化。
社区管理员
  • Docker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧