我是docker的新手,并按照https://docs.docker.com/develop/develop-images/baseimages/上的说明创建docker映像并尝试运行:
我的docker文件如下:
FROM scratch
ADD hello.sh /
CMD ["/hello.sh"]
hello.sh
文件如下。我已将dos2unix
应用于hello.sh
以确保正确的编码:
#!/bin/sh
echo "this is a test"
我按照文档中的说明运行以下命令来构建映像:
docker build --tag hello .
然后,当我运行docker run --rm hello
时,出现以下错误:
[FATAL tini (8)] exec /hello.sh failed: No such file or directory
已在线搜索并尝试了各种帖子的解决方案。但是他们都不起作用。关于我做错了什么的任何见解?
相关的无用线程: 1. https://forums.docker.com/t/standard-init-linux-go-175-exec-user-process-caused-no-such-file/20025/4
答案 0 :(得分:1)
从“临时”构建映像意味着您得到的容器只是一个空文件系统。尤其是对Docker来说是新手,您应该从一个像'alpine'的小映像开始,而不是从头开始,然后使用sh运行脚本。
如果您是从头开始构建的,则需要编译自己的二进制文件,然后将其添加为图像Install Bash on scratch Docker image的ENTRYPOINT或CMD。
关于从头开始构建https://docs.docker.com/develop/develop-images/baseimages/
的docker文档示例