我的
Dockerfile
如下所示:
FROM centos:7
ENTRYPOINT /bin/echo
CMD "helloworld"
构建
centos
图像后,当我运行docker run -it --name=con1 centos
时,我看不到"helloworld" to be printed.
需要帮助来理解为什么
CMD
没有被执行。
您需要使用 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