带有"make"命令的 docker 映像运行错误



我正在尝试为我的项目构建一个 docker 镜像。

docker 镜像可以在这里找到:https://hub.docker.com/r/haipengzhang/merchant_score_project

对应的 docker 文件是:

FROM continuumio/anaconda3
RUN apt-get update
RUN pip install lightgbm && 
pip install docopt==0.6.2 && 
pip install deap

当我尝试在项目的存储库下使用此命令在此 docker 映像中运行项目时make

docker run --rm -v /$(pwd):/home/xxx/ haipengzhang/merchant_score_project make -C /home/xxx/ clean

我收到以下错误:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: "make": executable file not found in $PATH": unknown.

有人可以帮忙吗? 谢谢!

原因

我现在知道这里发生了什么。最初提出此问题时,有问题的图像内部没有make命令。

RUN apt-get install -y build-essential添加到 Dockerfile 可以解决此问题。但是,此映像是在 dockerhub 上构建的,因此在添加此指令后重建映像时 - 它不会在本地刷新。您将主动需要再次拉取图像,就像我在此答案后面提到的那样。

我验证了这一点,但从原始 Dockerfile 定义重建映像并确认make不在那个映像中。

原始答案文本

我检查了一下,haipengzhang/merchant_score_project图像确实在路径/usr/bin/make中具有make命令,并且它是可执行的。图像中的用户是root,我能够很好地启动make命令。

您的docker run命令有一点问题,但我认为它与问题无关:

在卷映射中,不应在$(pwd)命令前面加上/。试试这个:

docker run --rm -v $(pwd):/home/xxx/ haipengzhang/merchant_score_project make -C /home/xxx/ clean

您收到的错误表明在图像内的路径或本地工作目录中找不到 make 命令 cimp——如果我尝试传递不存在的命令,我会收到同样的错误:

docker run --rm -v $(pwd):/home/xxx/ haipengzhang/merchant_score_project blabla

我得到相同的输出:

docker: Error response from daemon: OCI runtime create failed:
container_linux.go:349: starting container process caused "exec: "blabla": executable file not found in $PATH": unknown.

这让我相信图像的修订有些不正常,我会担心您在本地没有最新的图像?

刷新本地映像:

docker image rm haipengzhang/merchant_score_project:latest
docker pull haipengzhang/merchant_score_project

您可以尝试使用如下内容调试映像:

docker run --rm -v $(pwd):/home/xxx/ haipengzhang/merchant_score_project which make
docker run --rm -v $(pwd):/home/xxx/ haipengzhang/merchant_score_project ls -la /usr/bin/make
docker run --rm -v $(pwd):/home/xxx/ haipengzhang/merchant_score_project ls -la /home/xxx

看看你是否得到一些不合适的迹象

最新更新