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