#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