泊坞窗:可执行文件$ PATH中未发现泊坞窗:可执行文件$ PATH中未发现(docker: exe

2019-05-13 05:23发布

我有安装一个泊坞窗图像grunt ,但是当我尝试运行它,我得到一个错误:

Error response from daemon: Cannot start container foo_1: \
    exec: "grunt serve": executable file not found in $PATH

如果我在交互模式下运行的bash, grunt是可用的。

我究竟做错了什么?

这里是我的Dockerfile:

# https://registry.hub.docker.com/u/dockerfile/nodejs/ (builds on ubuntu:14.04)
FROM dockerfile/nodejs

MAINTAINER My Name, me@email.com

ENV HOME /home/web
WORKDIR /home/web/site

RUN useradd web -d /home/web -s /bin/bash -m

RUN npm install -g grunt-cli
RUN npm install -g bower

RUN chown -R web:web /home/web
USER web

RUN git clone https://github.com/repo/site /home/web/site

RUN npm install
RUN bower install --config.interactive=false --allow-root

ENV NODE_ENV development

# Port 9000 for server
# Port 35729 for livereload
EXPOSE 9000 35729
CMD ["grunt"]

Answer 1:

当使用exec格式的命令(例如CMD ["grunt"] ,JSON数组用双引号),它会壳被执行。 这意味着大多数环境变量都将不存在。

如果您指定的命令作为普通字符串(例如CMD grunt ),那么后面的字符串CMD将被执行/bin/sh -c

在此更多信息是在的CMD部分提供Dockerfile参考 。



Answer 2:

这是对谷歌的第一个结果时,我贴我的错误信息,那是因为我的论据是出故障了。

容器名称必须是经过所有参数。

坏:

docker run <container_name> -v $(pwd):/src -it

好:

docker run -v $(pwd):/src -it <container_name>


Answer 3:

我发现了同样的问题。 我做了以下内容:

docker run -ti devops -v /tmp:/tmp /bin/bash

当我将其更改为

docker run -ti -v /tmp:/tmp devops /bin/bash

它工作正常。



Answer 4:

有像这样的错误的可能原因。

在我的情况,这是由于该可执行文件( docker-entrypoint.sh从鬼博客Dockerfile )缺乏可执行文件模式我已经下载了之后。

解决方法: chmod +x docker-entrypoint.sh



Answer 5:

泊坞窗容器可能无壳建造(如https://github.com/fluent/fluent-bit-docker-image/issues/19 )。

在这种情况下,您可以复制在静态编译外壳并执行它,如

docker pull busybox
docker create --name temp-busybox busybox
docker cp temp-busybox:/busybox busybox
docker cp busybox mycontainerid:/busybox
docker exec -it mycontainerid /bin/busybox sh


Answer 6:

出于某种原因,我得到这个错误,除非我添加了“打击”澄清。 即使加上“#!/斌/ bash的”我的入口点文件没有帮助的顶部。

ENTRYPOINT [ "bash", "entrypoint.sh" ]


Answer 7:

使其工作增加软引用到/ usr / bin中:

LN-S $(这点)在/ usr / bin中/节点

LN-S $(其中海拔)的/ usr / bin中/海拔



文章来源: docker: executable file not found in $PATH
标签: docker