【发布时间】:2017-02-03 19:26:50
【问题描述】:
阅读ENTRYPOINT 的 Dockerfile 文档后,我在尝试重写我的一个命令时遇到问题:
今天运行,没有问题:
# 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"]
【问题讨论】:
标签: linux bash ubuntu docker dockerfile