使用`make`命令的docker镜像运行错误

时间:2020-06-21 06:09:27

标签: docker makefile dockerfile docker-image

我正在尝试为我的项目构建一个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

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

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.

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:3)

原因

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

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

我对此进行了验证,但是根据您原来的Dockerfile定义重建了映像,并确认make不在该映像中。

原始答案文本

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

您的docker run命令有一个小问题,但我认为这与问题无关:

在卷映射中,$(pwd)命令前不应带有/。尝试以下方法:

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

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

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

看看是否有迹象表明某些地方不合适