我正在尝试为我的项目构建一个 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
看看你是否得到一些不合适的迹象