这是一个简单的Dockerfile
FROM centos:6.6
ENTRYPOINT ["/bin/bash", "-l", "-c"]
CMD ["echo", "foo"]
不幸的是它不起作用.当您运行生成的结果容器时,什么都没有回显.
如果您注释掉ENTRYPOINT,那么它可以工作.但是,如果将ENTRYPOINT设置为/ bin / sh -c,则会再次失败
FROM centos:6.6
ENTRYPOINT ["/bin/sh", "-c"]
CMD ["echo", "foo"]
我认为这是一个没有定义的容器的默认ENTRYPOINT,为什么不起作用?
最后,这也有效
FROM centos:6.6
ENTRYPOINT ["/bin/bash", "-l", "-c"]
CMD ["echo foo"]
在我提交问题之前,我想知道我是否做了明显错误的事情?
我在我的容器中使用rvm,这需要一个登录shell才能正常工作.
最佳答案 请注意,
default entry point/cmd for an official centos 6 image是:
>没有入口点
>只有CMD [“/ bin / bash”]
如果使用-c命令,则需要传递一个参数(这是完整命令):“echo foo”.
不是一系列参数(CMD [“echo”,“foo”]).
如dockerfile CMD部分所述:
If you use the shell form of the CMD, then the
<command>
will execute in/bin/sh -c
:
FROM ubuntu
CMD echo "This is a test." | wc -
If you want to run your
<command>
without a shell then you must express the command as a JSON array and give the full path to the executable
Since echo
is a built-in command in the bash and C shells,这里的壳形式是优选的.