docker - docker镜像中的sh在Windows 10上看不到可执行文件

标签 docker windows-10 sh executable

我有一个docker image https://github.com/carnellj/spmia-chapter1,尽管它在文件系统中,但找不到其CMD ./run.sh可执行文件。

我能够在容器中运行/ bin / sh,并且可以执行ls -l:

D:\Dokumente\ws\spring-microservices\spmia-chapter1 (master)
λ docker run -i -t johncarnell/tmx-simple-service:chapter1 /bin/sh
/ # ls -l
total 56
drwxr-xr-x    2 root     root          4096 Mar  3 11:20 bin
drwxr-xr-x    5 root     root           360 Apr 22 07:10 dev
drwxr-xr-x    1 root     root          4096 Apr 22 07:10 etc
drwxr-xr-x    2 root     root          4096 Mar  3 11:20 home
drwxr-xr-x    1 root     root          4096 Apr 22 06:01 lib
drwxr-xr-x    5 root     root          4096 Mar  3 11:20 media
drwxr-xr-x    2 root     root          4096 Mar  3 11:20 mnt
dr-xr-xr-x  123 root     root             0 Apr 22 07:10 proc
drwx------    1 root     root          4096 Apr 22 07:10 root
drwxr-xr-x    2 root     root          4096 Mar  3 11:20 run
-rwxr-xr-x    1 root     root           245 Apr 22 06:50 run.sh
drwxr-xr-x    2 root     root          4096 Mar  3 11:20 sbin
drwxr-xr-x    2 root     root          4096 Mar  3 11:20 srv
dr-xr-xr-x   13 root     root             0 Apr 22 07:10 sys
drwxrwxrwt    2 root     root          4096 Mar  3 11:20 tmp
drwxr-xr-x    1 root     root          4096 Mar  7 01:04 usr
drwxr-xr-x    1 root     root          4096 Mar  7 01:04 var
/ # ./run.sh
/bin/sh: ./run.sh: not found
/ # ls run.sh
run.sh

/ bin / sh找不到./run.sh,尽管它在文件系统中,如ls run.sh所证明的那样。另外,cat显示run.sh的内容:
/ # cat run.sh                                                       
#!/bin/sh                                                            
echo "********************************************************"      
echo "Starting simple-service "                                      
echo "********************************************************"      
java -jar /usr/local/simple-service/simple-service-0.0.1-SNAPSHOT.jar

当我从sh运行vi并将run.sh的内容复制到新文件myrun.sh中并使myrun.sh可执行时,我可以执行./myrun.sh并启动spring服务。

这里发生了什么?为什么看不到文件系统中的可执行文件?来自PATH的可执行文件或我手动添加的可执行文件运行良好。

我正在Windows 10上运行Docker。

最佳答案

好的原因是,如果您使用自动lf-> crlf转换 checkout ,则会在docker镜像中使用Windows行尾创建run.sh。一种可能的解决方案是告诉git不要转换行尾。

关于docker - docker镜像中的sh在Windows 10上看不到可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43556722/

相关文章:

node.js - Docker容器没有TMPDIR环境变量

mysql - 批处理文件没有将结果写入所需的目录?

windows-10 - WIn10 wsl2 :Ubuntu getting fatal: unable to access 'https: Failed to connect to github. com 端口 443:连接超时

Windows 10 移动版上的 Java

python - 在执行 MATLAB 文件和 Python 脚本之间交替执行

node.js - docker 中的 Node 检查器不加载源

linux VMware机器上的Docker : error with apt-get and proxy

docker compose 3 sysctls 指令不受支持

linux - 如何在双引号内执行 Linux shell 变量?

node.js - 通过 Node.js 运行 bash 脚本 - 非法选项 -o pipelinefail