【问题标题】:How hello world container is printing the welcome text?hello world 容器如何打印欢迎文本?
【发布时间】:2020-03-24 18:47:53
【问题描述】:

我在某处读到 hello-world docker 映像是从头开始的,所以它没有外壳,那么它是如何执行 hello 可执行文件的?我们不需要shell来执行文件吗?

【问题讨论】:

标签: linux docker dockerfile containers docker-container


【解决方案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 和入口点运行不需要 shell 的可执行文件。如果你运行,你会得到相同的响应

docker run -it --entrypoint ./hello --rm hello-world
docker run -it --rm hello-world

【讨论】:

    猜你喜欢
    • 2014-01-10
    • 2018-03-11
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    相关资源
    最近更新 更多