[英]exec not found using Dockerfile ENTRYPOINT
该Dockerfile文档阅读了ENTRYPOINT
,我有试图重写我的命令之一的一个问题:
从今天开始运行,没有任何问题:
# Startup
ENTRYPOINT ["/etc/init.d/hook", "/run/apache2/apache2.pid", "/etc/init.d/apache2 start"]
根据各种消息来源,我应该使用exec分支我的钩子进程,因此我已简单地将入口点更改为
ENTRYPOINT ["exec", "/etc/init.d/hook", "/run/apache2/apache2.pid", "/etc/init.d/apache2 start"]
但是现在我收到以下错误:
container_linux.go:247:启动容器进程导致“ exec:\\” exec \\”:在$ PATH中找不到可执行文件”
为什么exec
找不到? 这不是内置的bash吗?
如果我连接到容器,则可以正常运行exec
$ docker exec -it $( docker ps | grep imagename | awk '{print $1}' ) bash
root@f704bfe5d6c6:/# exec echo hi
hi
如何在ENTRYPOINT
指令中使用exec
?
编辑
这是一个重现该错误的Dockerfile
FROM ubuntu:16.10
ENTRYPOINT ["exec", "echo", "hi"]
尝试使用ENTRYPOINT ["exec", "/etc/init.d/hook", "/run/apache2/apache2.pid", "/etc/init.d/apache2", "start"]
检查文件
https://docs.docker.com/engine/reference/builder/#/entrypoint
应该也可以
ENTRYPOINT /etc/init.d/hook /run/apache2/apache2.pid /etc/init.d/apache2 start
有趣的是,我可以通过简单地从数组中删除参数来完成这项工作
这将按预期工作
ENTRYPOINT exec echo hi
虽然这会产生错误
ENTRYPOINT ["exec", "echo", "hi"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.