繁体   English   中英

使用Dockerfile ENTRYPOINT找不到exec

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM