我正在尝试为我的项目构建一个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.
有人可以帮忙吗?谢谢!
答案 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
看看是否有迹象表明某些地方不合适