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
看看你是否得到一些迹象表明有什么地方不对
我正在尝试为我的项目构建 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
看看你是否得到一些迹象表明有什么地方不对