一、背景


docker所在主机:CentOS 7.4

Dockerfile编写环境是Win10 ,Nodepad++

        在现实工作中,有时编写一个Dockerfile文件,build后没提示任何错误。但是运行docker容器时容器没有驻留,异常中止了,使用dokcer logs查看日志却提示standard_init_linux.go:190: exec user process caused "no such file or directory" 。

我去,这是什么原因呢?一头雾水,请往下看。

二、原因分析

 如果是使用notepad++来编辑文件,并通过FTP上传到服务器,默认是以DOS文本格式来创建的,这时就需要把文件转换下字符,避免出现standard_init_linux.go:190: exec user process caused "no such file or directory" 错误提示。

1、在linux服务器上查看:

cat -v run.sh 
#!/bin/bash^M
^M
python3 /root/start.sh:^M
service mysql start:^M
^M

# 就是^M这个造成的问题。

  2、在windows上用notepad++查看

 

三、化解术

1、使用命令小工具转换

 1.安装dos2unix

yum install -y dos2unix

 2.相关文件转换一下字符

dos2unix Dockerfile
dos2unix run.sh

2、使用notepad++转换

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐