Контейнер Docker печатает "нет такого файла или каталога" - PullRequest
0 голосов
/ 22 февраля 2019

Я довольно новичок в докере и совершенно не знаю, как решить мою проблему.Я искал и искал, и ничего, что я нашел, до сих пор не устранило мою проблему.

Независимо от того, что я делаю, мне не удается найти и выполнить мой bash-скрипт.

К вашему сведению - я использую dockerfile-maven-plugin для запуска процесса сборки докера

Вот мой докер-файл:

FROM openjdk:8-jre

WORKDIR /  ## I've also tried other directories, besides root

ARG JAR_FILE    ## variable inject via dockerfile-maven-plugin
ADD ${JAR_FILE} /motus-exec.jar

ADD run_motus.sh /
RUN ["chmod", "+x", "/run_motus.sh"]
ENTRYPOINT ["/run_motus.sh"]

Вот мой скрипт

#!/bin/sh
/usr/bin/java -jar /motus-exec.jar

Вывод из образа докера здания

[INFO] Step 1 : FROM openjdk:8-jre
[INFO] Trying to pull repository docker.io/library/openjdk ... 
[INFO] Pulling from docker.io/library/openjdk
[INFO] Digest: sha256:2216ccda45993afaa42b3b269aa1ae8832cb2fabbf8207f63d528fdc7c8a087b
[INFO] Status: Image is up to date for docker.io/openjdk:8-jre
[INFO]  ---> ed287c436e66
[INFO] Step 2 : WORKDIR /
[INFO]  ---> Running in 779de913ad3b
[INFO]  ---> 7ba637ea0ee8
[INFO] Removing intermediate container 779de913ad3b
[INFO] Step 3 : ARG JAR_FILE
[INFO]  ---> Running in 99c86f5273f0
[INFO]  ---> 8b0e9f39c1ab
[INFO] Removing intermediate container 99c86f5273f0
[INFO] Step 4 : ADD ${JAR_FILE} /motus-exec.jar
[INFO]  ---> 4bd2c163c7c3
[INFO] Removing intermediate container 9a9098d6e51a
[INFO] Step 5 : ADD run_motus.sh /
[INFO]  ---> 115cc9b09439
[INFO] Removing intermediate container 51e610f15427
[INFO] Step 6 : RUN chmod +x /run_motus.sh
[INFO]  ---> Running in 62dabd8b432e
[INFO]  ---> 8db646df2936
[INFO] Removing intermediate container 62dabd8b432e
[INFO] Step 7 : ENTRYPOINT /run_motus.sh
[INFO]  ---> Running in 330c5442d61a
[INFO]  ---> 0d9c0f6f5a34
[INFO] Removing intermediate container 330c5442d61a
[INFO] Successfully built 0d9c0f6f5a34

Вывод при запуске образа

>> docker run tl/motus-sol:0.2.2-SNAPSHOT
no such file or directory
docker: Error response from daemon: Container command not found or does not exist..

Заранее благодарен за любую помощь.

1 Ответ

0 голосов
/ 25 февраля 2019

Docker запущен с «Контейнерная команда не найдена или не существует» означает, что команда в точке входа не существует.

В вашем случае команда в файле .sh: sh или java оба существуют в образе openjdk: 8-jre.Таким образом, вы можете проверить проблему в синтаксисе сценария оболочки.Если вы редактируете файл sh с помощью редактора Windows, убедитесь, что у вас нет CRLF (\ r \ n) в конце команды.Один из способов удалить \ r - запустить sed перед добавлением файла sh в контейнер:

sed -e 's/\r//g' run_motus.sh
...