Две вещи.
- Вы использовали
CMD
дважды.
CMD
можно использовать только один раз, думайте об этом как о цели вашего образа докера. Каждый раз, когда контейнер запускается, он всегда будет выполнять CMD
, если вам нужно несколько команд, вы должны использовать RUN
, а затем, наконец, использовать CMD
FROM openjdk:
MAINTAINER MyPerson
WORKDIR /usr/src/
ENTRYPOINT ["cp"]
RUN /usr/src/myapp
RUN ls /usr/src/myapp
- Копирование материала в образ Существует простая команда
COPY
с синтаксисом COPY <from-here> <to-here>
Похоже, вы хотите запустить myjavaimage
, так что вы сделаете следующее:
COPY /path/to/myjavaimage /myjavaimage
CMD myjavaimage MainClass.java
Там, где вы видите стрелки, я только что написал фиктивный код. Замените его правильным кодом.
Кроме того, ваш Dockerfile плохо создан.
ENTRYPOINT -> не знаю, зачем вам делать "cp" , но это фактическая точка входа. Может указывать на корневой каталог вашего проекта или на приложение, которое будет запущено. Не понимаю, почему вы хотите сделать ls /usr/src/myapp
, но если хотите, используйте RUN
, а не CMD
.
Наконец, лучший способ отлаживать контейнеры докеров — в интерактивном режиме. Это означает, что вы подключитесь к контейнеру по ssh, осмотритесь, запустите код и посмотрите, в чем проблема.
Запустите это: docker run -it <image-name> /bin/bash
, а затем загляните внутрь, и обычно это лучший способ увидеть, что вызывает проблемы.
person
DUDANF
schedule
12.11.2019
docker cp
см. это, например, stackoverflow.com/questions/57771529/ - person LinPy   schedule 12.11.2019--privileged
делает evth на хост-компьютере доступным. - person DUDANF   schedule 12.11.2019