Dockerfile执行shell脚本报错No such file or directory(又名 Dockerfile中sh脚本格式引发的灾难)

摘要:
这将带来灾难。使用Dockerfile构建图像。它将在运行中执行内容。docker运行时的sh。我dockerbuild成功地构建了图像。当dockerrun启动图像时,会报告一个错误:这只是一行!!这件事只有一行:Nosuchfileor目录不见了,其他什么都没有打印。故障排除路径长~~~~文件目录正常;检查Dockerfile语法,没有问题;在查看了sh脚本的内容后,我没有发现任何问题。尝试在[“/run.sh”,“-x”]中添加-t、-x和-c。迎着微风,闻着青草的味道,我突然想起,我之前遇到过一个由sh脚本格式问题导致的错误。快把它掐灭,抓住病毒。

工具的初衷是好的,但是工具如果不加以正确使用、或者不够完善。那将带来的是灾难。

使用Dockerfile进行镜像构建。里面有这么一行:

Dockerfile执行shell脚本报错No such file or directory(又名 Dockerfile中sh脚本格式引发的灾难)第1张

我在ENTRYPOINT处指定了一个脚本。它是在构建镜像时,从一个目录中copy进去的。它将会在docker run时会去执行run.sh里的内容。

但神奇的问题发生了。我docker build构建镜像成功完毕。docker run启动镜像时报错:

Dockerfile执行shell脚本报错No such file or directory(又名 Dockerfile中sh脚本格式引发的灾难)第2张

就这么一行!!我启动时指定镜像没有加-d后台启动,打印的实时日志。就一行这玩意':No such file or directory

没了,别的什么都没打印。

WTF!

漫长排查路~~~~

文件目录没问题;

Dockerfile语法查了查,没问题;

sh脚本内容看了下,也没发现啥问题。

问题在哪呢??

尝试在["/run.sh","-x"] 这里尝试加过-t、-x、-c啥的。基本都试了一遍。想着至少能定位下行号,或者多打印点什么出来,但没有。日志仍旧只有那一行,一个字符都不带多的。

下去抽颗smoke吧,这种问题就是来搞心态的。

迎着小风,闻着草味,思绪繁杂

忽然想起来,以前碰到过sh脚本的格式问题导致的报错。叫什么bad inte... no such file directory(时间久记不清了,后查证叫:bad interpreter: No such file or directory)。

这俩好像看起来有点像。

再一想,好像更像了。

赶紧掐灭 上去逮着vi run.sh。:set ff 一看。挖槽 真的是dos....

万只草泥马开始奔袭。

:set ff=unix修改保存后。重新构建启动,可以了!!

忍不住想吐槽一句:这报错报的也太人性化了,跟个鬼一样。

免责声明:文章转载自《Dockerfile执行shell脚本报错No such file or directory(又名 Dockerfile中sh脚本格式引发的灾难)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇把NHibernate的DomainObject转换为Json!?Java日志体系下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

android 功耗(1)---android 功耗分析方法和优化

1、底电流调试(Rock Bottom Current Optimization) 底电流在手机飞行模式下调试。每个平台的底电流数据可能不一样,具体可以参考release出来的Current Consumption Data文档或者release note。一般情况下的底电流参考数据上限是: 底电流在手机飞行模式下调试。每个平台的底电流数据可能不一样,具体...

shell命令之find的用法

最近面试的时候碰到了shell中问到find的问题,因此今天总结一下find的用法   1、find的应用场景   2、find的使用方法和参数解析 1、find的应用场景  首先我们回答一下find的应用场景。我个人觉得find可以和grep来进行对比分析。find是用来查找文件或者目录的,而grep是用来查找文件中的字符串的。 2、find的使用方法和...

Linux下使Shell 命令脱离终端在后台运行

你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,连续压缩了半个小时还没有完成,这时,突然你断网了,你登录不上远程Linux主机了,那么前面的半个小时就会前功尽弃,你非常气愤…… 在Linux下,如果你要执行的shell命令耗时特别长,并且:(1)你的网络不稳定,随时可能断网;或者(2)你在执行了s...

Linux上shell脚本,字符串转ASCII码

  在shell脚本里,将字符串转ASCII码的方法: [keysystem@localhost ~]$ printf "%d" "'A" 65 [keysystem@localhost ~]$ printf "%d" "'0" 48   在shell脚本里,将字符串转10进制转16进制的方法: [keysystem@localhost ~]$ print...

使用kubeadm部署K8S v1.17.0集群

环境信息 操作系统:CentOS Linux release 7.7.1908 (Core) docker:19.03.8 kubernetes:v1.17.0 集群信息 hostname IP k8s-master 192.168.87.10 k8s-node01 192.168.87.11 一、准备工作(所有节点执行) 1.1、...

淘宝npm镜像安装失败的问题

一:背景 心血来潮要简单搞一搞前端运行、打包的东西。结果第一步通过npm安装淘宝npm的时候就出问题了,如图: 二:解决方法 图片显示有点垃圾,但是看出来“Missing write access to /usr/local/lib/node_modules”,所以缺少权限,那么在执行前加sudo "sudo npm install -g cnpm --...