docker ошибка запуска образа с командами `make` - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь создать образ 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.

Кто-нибудь может помочь? Спасибо!

1 Ответ

3 голосов
/ 21 июня 2020

Причина

Теперь я знаю, что здесь произошло. Когда изначально был задан этот вопрос, в образе, о котором идет речь, не было команды 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.

Это заставляет меня думать, что что-то не в порядке с ревизией изображения, я бы беспокоиться о том, что у вас нет последнего образа локально?

Чтобы обновить sh локальный образ:

docker image rm haipengzhang/merchant_score_project:latest
docker pull haipengzhang/merchant_score_project

Вы можете попробовать отладить образ с помощью чего-то вроде: 1038 *

И посмотрите, появятся ли признаки того, что что-то не на месте

...