[我从某处读到hello-world docker映像是从头开始的,因此它没有外壳,然后它如何执行hello
可执行文件?我们不需要外壳程序来执行文件吗?
因为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