Dockerfile问题解决

在windows环境中使用Dockerfile编译自己的镜像时运行镜像会出现报错

standard_init_linux.go:190: exec user process caused "no such file or directory"

部分代码如下

1
2
3
4
COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh
# ENTRYPOINT
ENTRYPOINT ["/docker-entrypoint.sh"]

百度,谷歌查了一遍,才知道怎么回事。
具体点击链接
简单点说就是window文件换行符为\r\n,linux为\n,拷贝到镜像里的docker-entrypoint.sh无法被识别为可执行文件,所以报错

解决方法

1

docker-entrypoint.sh保存时候选择LF保存

2

使用dos2unix

上述Dockerfile代码修改为:

1
2
3
4
5
6
COPY docker-entrypoint.sh /usr/local/bin/
RUN yum install -y dos2unix
RUN dos2unix /usr/local/bin/docker-entrypoint.sh
RUN ln -s /usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh
# ENTRYPOINT
ENTRYPOINT ["/docker-entrypoint.sh"]