Docker 找不到模块 /bin/bash
Docker cannot find module /bin/bash
我正在尝试为 nodejs 网络后端构建 docker 图像,目前看起来像这样:
FROM node:10-alpine
WORKDIR /usr/src/smart-brain-api
COPY ./ ./
RUN npm install
CMD ["/bin/bash"]
当我在构建图像后执行 docker run -it
时,出现了这个奇怪的错误
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module '/bin/bash'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
但是,如果我编辑 docker 文件并将 CMD ["/bin/bash"] 更改为 CMD ["/bin/sh"] 一切正常
我正在使用 macbook air 13,我不知道这是否是一个因素。
alpine
图片没有 bash
开箱即用。需要单独安装。
RUN apk update && apk add bash
您可以在您的工作容器中尝试 which bash
,但此容器映像中很可能没有 Bash。
尝试使用不太苗条的图像。
就像其他答案所说的那样,您需要先安装 bash,因为 alpine 没有安装 bash。您需要安装它:
RUN apk update && apk add bash
然后你可以在你的 dockerfile
中使用这一行将默认的 shell 从 sh 切换到 bash
SHELL ["/bin/bash", "-c"]
dockerfile 应该看起来像这样
FROM node:10-alpine
RUN apk update && apk add bash
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
CMD bash # If you want to override CMD
然后你可以用这条线启动你的容器
docker run -it --rm <image-name> bash
或者如果您已经覆盖了 CMD,您可以简单地执行
docker run -it --rm <image-name>
我正在尝试为 nodejs 网络后端构建 docker 图像,目前看起来像这样:
FROM node:10-alpine
WORKDIR /usr/src/smart-brain-api
COPY ./ ./
RUN npm install
CMD ["/bin/bash"]
当我在构建图像后执行 docker run -it
时,出现了这个奇怪的错误
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module '/bin/bash'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
但是,如果我编辑 docker 文件并将 CMD ["/bin/bash"] 更改为 CMD ["/bin/sh"] 一切正常
我正在使用 macbook air 13,我不知道这是否是一个因素。
alpine
图片没有 bash
开箱即用。需要单独安装。
RUN apk update && apk add bash
您可以在您的工作容器中尝试 which bash
,但此容器映像中很可能没有 Bash。
尝试使用不太苗条的图像。
就像其他答案所说的那样,您需要先安装 bash,因为 alpine 没有安装 bash。您需要安装它:
RUN apk update && apk add bash
然后你可以在你的 dockerfile
中使用这一行将默认的 shell 从 sh 切换到 bashSHELL ["/bin/bash", "-c"]
dockerfile 应该看起来像这样
FROM node:10-alpine
RUN apk update && apk add bash
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
CMD bash # If you want to override CMD
然后你可以用这条线启动你的容器
docker run -it --rm <image-name> bash
或者如果您已经覆盖了 CMD,您可以简单地执行
docker run -it --rm <image-name>