docker 图片 运行 `make` 命令出错

docker image running error with `make` commands

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

有人可以帮忙吗?谢谢!

原因

我现在知道这里发生了什么。最初问这个问题时,有问题的图像里面没有 make 命令。

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

我验证了这一点,但是从您的原始 Dockerfile 定义重建图像并确认 make 不在该图像中。

原始答案文本

我检查过,图像 haipengzhang/merchant_score_project 实际上在路径 /usr/bin/make 中有 make 命令,并且它是可执行的。图中的用户是root,我可以正常启动make命令。

您的 docker 运行 命令有点问题,但我认为这与问题无关:

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

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

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

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

看看你是否得到一些迹象表明有什么地方不对