在k8s上 运行docker镜像,报错:
standard_init_linux.go:207: exec user process caused “no such file or directory”

原因:
windows下文件默认编码格式为dos,linux下默认为unix。因此在解析文件时出错,报错no such file or directory。

验证方式:
将Dockerfile 文件放在linux下查看。

运行 cat -v Dockerfile 

结果
RUN chmod +x /app-entrypoint.sh^M
#M-eM-/M-9M-eM-$M-^VM-fM-^ZM-4M-fM-<M-^OM-gM-^ZM-^DM-gM-+M-/M-eM-^OM-#M-eM-^OM-7^M
EXPOSE 8761^M

这种有^M 的即为编码错误造成

解决方式:
linux下打包
有人说将.sh文件的头部 #!/bin/bash 改为#!/bin/sh也可以 我自己尝试没有起作用

遗留问题:
同样windows下打包的镜像,在k8s的一些集群上可以运行,但在这个集群下不能运行,应该与集群配置有关,但暂未找出原因。
如果有人知道原因 可以留言 谢谢

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐