与 ENTRYPOINT 结合使用时 CMD 不执行

问题描述 投票:0回答:1

我的

Dockerfile
如下所示:

FROM centos:7
ENTRYPOINT /bin/echo
CMD "helloworld"

构建

centos
图像后,当我运行
docker run -it --name=con1 centos
时,我看不到
"helloworld" to be printed.

需要帮助来理解为什么

CMD
没有被执行。

docker docker-compose dockerfile containers docker-registry
1个回答
1
投票

您需要使用 ENTRYPOINT 和 CMD 的“exec”形式。使用以下 Dockerfile:

FROM centos:7
ENTRYPOINT ["/bin/echo"]
CMD ["helloworld"]

跑步:

docker build -t hello .
docker run --rm hello

作为输出产生:

helloworld

当你写下:

ENTRYPOINT /bin/echo

转化为:

/bin/sh -c "/bin/echo"

当你写下:

CMD helloworld

那就变成:

/bin/sh -c "helloworld"

这就是为什么你没有看到你期望的行为。有关该主题的一些文档,请参阅此处


只是为了演示,如果我们使用这个 Dockerfile:

FROM centos:7
ENTRYPOINT ["/bin/echo"]
CMD helloworld

那么输出将是:

/bin/sh -c helloworld
© www.soinside.com 2019 - 2024. All rights reserved.