我在某处读到hello-world docker映像是从头开始的,因此它没有外壳,那么它如何执行hello
可执行文件?我们不需要外壳程序来执行文件吗?
答案 0 :(得分:1)
因为docker CMD
旨在运行可执行文件。
CMD
CMD指令具有三种形式:
CMD ["executable","param1","param2"] (exec form, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (shell form)
在Dockerfile中只能有一条CMD指令。如果列出 一个以上的CMD,则只有最后一个CMD才会生效。
CMD的主要目的是为执行提供默认值 。这些默认值可以包含可执行文件,也可以省略 可执行文件,在这种情况下,您必须指定一个ENTRYPOINT 指导。
因此CMD和入口点运行可执行文件,您不需要外壳程序。如果您运行,将会得到相同的响应
docker run -it --entrypoint ./hello --rm hello-world
docker run -it --rm hello-world