读了Dockerfile文档上ENTRYPOINT
没有发现,我有试图重写我的命令之一的一个问题:EXEC使用Dockerfile入口点
它今天运行,没有问题:
# Startup
ENTRYPOINT ["/etc/init.d/hook", "/run/apache2/apache2.pid", "/etc/init.d/apache2 start"]
据各种消息来源,我应该用叉高管我挂钩的过程,所以我有简单的改变入口点到
ENTRYPOINT ["exec", "/etc/init.d/hook", "/run/apache2/apache2.pid", "/etc/init.d/apache2 start"]
但现在我收到以下错误:
container_linux.go:247: starting container process caused "exec: \"exec\": executable file not found in $PATH"
为什么exec
不会被发现?这不是一个bash内建的吗?
如果我附于至容器,我可以运行没有问题
$ docker exec -it $(docker ps | grep imagename | awk '{print $1}') bash
[email protected]:/# exec echo hi
hi
如何我在ENTRYPOINT
指令中使用exec
EXEC?
编辑
这里是一个Dockerfile再现错误
FROM ubuntu:16.10
ENTRYPOINT ["exec", "echo", "hi"]
这是因为第一个表单被传递给一个shell,而第二个表单不是。所以'exec'被发现,因为它是一个shell内建的。在第二种形式中,你调用'exec'并且没有shell来提供它,它不存在。 –