我是docker的新手,我想创建一个简单的图像,当我运行它时,我可以在终端上看到它的输出。我试过两种方法:
第一种方式:
echo "hello"
FROM Scratch
ADD script.sh /usr/local/bin/run.sh
CMD ["/usr/local/bin/run.sh"]
go build -t hello_image .
go run hello_image
standard_init_linux.go:175: exec user process caused "exec format error"
然后我尝试了第二种方式:
FROM Scratch
CMD echo "This is a test."
Error response from daemon: oci runtime error: exec: "/bin/sh": stat /bin/sh: no such file or directory.
任何人都可以帮助我解决这些错误,甚至可以解释我应该怎么做才能创建一个简单的代码图像并在运行时看到它的输出。谢谢
答案 0 :(得分:4)
scratch
图片字面上是“空的”。基本图像没有提供文件,最重要的是没有shell(bash
,sh
等)。
当您尝试运行bash脚本时,它失败了,因为没有bash
二进制文件来运行它。
当您尝试运行echo
时,它失败了,因为图片中不存在echo
二进制文件。
如果要从script
运行程序,则需要将其编译为静态ELF二进制文件。这很容易做一些语言(例如go lang)。
如果你想只运行一个bash脚本,你应该尝试从alpine
创建一个图像,这是一个最小的Linux发行版:
FROM alpine:3.4
CMD echo "hello"
或者
FROM alpine:3.4
RUN apk add -U bash
COPY script.sh /usr/local/bin/run.sh
CMD ["bash", "/usr/local/bin/run.sh"]