这是一个简单的Dockerfile
FROM centos:6.6
ENTRYPOINT ["/bin/bash", "-l", "-c"]
CMD ["echo", "foo"]
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不起作用。运行生成的结果容器时,没有任何回显。
如果您将其注释掉,ENTRYPOINT那么它将起作用。但是,如果将设置ENTRYPOINT为/bin/sh -c,则它将再次失败
FROM centos:6.6
ENTRYPOINT ["/bin/sh", "-c"]
CMD ["echo", "foo"]
Run Code Online (Sandbox Code Playgroud)
我以为这是ENTRYPOINT没有定义容器的默认容器,为什么没有用?
最后,这也有效
FROM centos:6.6
ENTRYPOINT ["/bin/bash", "-l", "-c"]
CMD ["echo foo"]
Run Code Online (Sandbox Code Playgroud)
在提交问题之前,我想看看我是否做错了明显的事情?
我在rvm容器内使用哪种需要登录shell才能正常工作。
请注意,官方 centos 6 映像的默认入口点/cmd是:
CMD ["/bin/bash"]如果您使用该-c命令,则需要传递一个参数(这是完整的命令):"echo foo"。
不是一系列参数 ( CMD ["echo", "foo"])。
如dockerfile CMD部分所述:
如果您使用 CMD 的 shell 形式,那么将
<command>执行/bin/sh -c:
FROM ubuntu
CMD echo "This is a test." | wc -
Run Code Online (Sandbox Code Playgroud)
如果您想在没有 shell 的情况下运行
<command>,则必须将命令表示为 JSON 数组,并提供可执行文件的完整路径
由于echo是 bash 和 C shell 中的内置命令,因此这里的 shell 形式更可取。
| 归档时间: |
|
| 查看次数: |
4878 次 |
| 最近记录: |