Не могу запустить docker изображение - PullRequest
2 голосов
/ 28 мая 2020

Во-первых, извините, если мой вопрос звучит слишком просто или глупо. Я новичок в docker. Я создал свое изображение docker и передал несколько файлов jar, которые должны запускаться сразу после запуска контейнера. Я хочу запустить скрипт «serve. sh» сразу после запуска контейнера. Мне удалось создать изображения, но когда я запускаю контейнер, он выдает мне эту ошибку:

C: \ Program Files \ Docker \ Docker \ resources \ bin \ docker .exe: ответ об ошибке от демона: сбой при создании среды выполнения OCI: container_ linux. go: 349: запуск процесса контейнера вызвал "exe c" : \ "- it \": исполняемый файл не найден в $ PATH ": unknown.

Вот команда, которую я использую для запуска созданного мной образа:

docker run b24b37614e1a -it

Вот мой docker файл:

FROM openjdk:8-jdk-alpine
EXPOSE 8080:8080
COPY apigateway-0.0.1-SNAPSHOT.jar apigateway.jar
COPY authservice-0.0.1-SNAPSHOT.jar authservice.jar
COPY institutionsservice-0.0.1-SNAPSHOT.jar institutionsservice.jar
COPY messagesservice-0.0.1-SNAPSHOT.jar messagesservice.jar
COPY postsservice-0.0.1-SNAPSHOT.jar postsservice.jar
COPY userservice-0.0.1-SNAPSHOT.jar userservice.jar
COPY serve.sh serve.sh
CMD [ "bash" "./serve.sh" ] 

Пожалуйста, что я делаю не так? Я новичок в docker

Ответы [ 2 ]

3 голосов
/ 28 мая 2020

Есть несколько вещей, которые вы должны исправить. Во-первых, это формат CMD, который должен быть

CMD instruction has three forms:

CMD ["executable","param1","param2"] (exec form, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (shell form)
CMD [ "/bin/bash" , "./serve.sh" ] 

Другое, когда вы делаете docker run, инструкции

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

, что означает, что все параметры должны быть до IMAGE, а в вашем случае it появляется после IMAGE.

Правильная команда должна быть

docker run -it b24b37614e1a

BTW , небольшой вопрос, почему вы хотите запустить интерактивный контейнер этого приложения. В идеале это должно быть что-то вроде

docker run -p $HOST_PORT:$APP_PORT b24b37614e1a

-p => Publi sh порт (ы) контейнера для хоста

, а затем вы можете получить доступ к своему приложению localhost:$HOST_PORT или machine_IP:$HOST_PORT

2 голосов
/ 28 мая 2020

Имейте в виду, что docker порядок аргументов имеет значение:
вы написали docker run b24b37614e1a -it, который отличается от

docker run -it b24b37614e1a

Надеюсь, это решит вашу проблему :)

...