команда, связанная с докером, в терминале CentOS

#docker #docker-compose #centos

Вопрос:

Я пытаюсь выполнить цепную команду в своем контейнере, чтобы обновить команду.

Это мой приказ:

 docker run -it --entrypoint java -jar /home/dev/juju-1.0.0.jar -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=8080 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.rmi.port=8080 -Djava.rmi.server.hostname=localhost ng-juju-prod
 

Проблема в том, что я продолжаю получать эту ошибку:

неизвестный флаг сокращения: «j» в банке

Комментарии:

1. Документы имеют другой синтаксис для запуска точек входа с несколькими аргументами. Ты пробовал docker run -it --entrypoint /bin/bash IMAGE_NAME -c java -jar ... ?

Ответ №1:

Если вам нужно переопределить точку входа контейнера более длинной командой, docker run --entrypoint опция принимает только первое слово команды (двоичный файл для запуска); если у вас есть дополнительные параметры, они должны быть переданы после имени изображения.

 docker run                       
  -it                             # for programs that interact on the console
  --entrypoint java               # override image ENTRYPOINT
  ng-juju-prod                    # image name
  -jar /home/dev/juju-1.0.jar ...  # arguments to entrypoint (CMD)
 

Эта конструкция может быть несколько неловкой. Если вы измените ENTRYPOINT линию вашего изображения на CMD

 CMD ["java", "-jar", "juju-1.0.jar"] # not ENTRYPOINT
 

затем вы можете указать всю команду после имени изображения без --entrypoint опции

 docker run -it ng-juju-prod 
  java -jar /home/dev/juju-1.0.jar ...
 

Другой шаблон, с которым вы сталкиваетесь, — это использование ENTRYPOINT для полной команды и CMD ее параметров. Все , что следует за именем docker run изображения, заменяет CMD , но оставляет ENTRYPOINT нетронутым.

 # must be JSON-array form; must include the program name and not
# just the interpreter
ENTRYPOINT ["java", "-jar", "/home/dev/juju-1.0.jar"]
# must be JSON-array form, or absent
CMD ["-Dconfiguration.default=true"]
 
 docker run -it ng-juju-prod              # no --entrypoint
  -Dcom.sun.management.jmxremote=true ... # options only