Я хочу настроить некоторые настройки при запуске моего контейнера, для этого я использую сценарии оболочки. Но мой контейнер выйдет, как только мои скрипты закончатся, я попытался использовать флаг -d/отсоединенный режим, но он никогда не будет работать в отключенном режиме.Dockerfile Инструкция CMD выйдет из контейнера сразу после запуска
Ниже мой Dockerfile
FROM ubuntu:14.04
ADD shell.sh /usr/local/bin/shell.sh
RUN chmod 777 /usr/local/bin/shell.sh
CMD /usr/local/bin/shell.sh
Ниже мой сценарий оболочки
#!/bin/bash
echo Hello-docker
Run без флага
docker run hello-docker
Это напечатает 'Hello-докер' на моя консоль и выходы
Запуск с -itd флагов
docker run -itd hello-docker
и ниже моего выхода консоли, на этот раз будет также выезды с скоро. :(
разница я увидел в COMMAND секции при запуске других изображений команды раздел будет показаны «/ бен/Баш» и будет продолжаться в отдельном режиме.
И когда Я бег моего изображения в контейнере с сценарий оболочки COMMAND разделе будет показан «/ bin/ш -c/USR/лок» и Выйти.
Я хочу, чтобы запустить контейнер, пока я не остановить его вручную.
EDIT:
После добавления инструкции Entrypoint в Dockerfile, это будет не выполнять мой сценарий оболочки :(
FROM ubuntu:14.04
ADD shell.sh /usr/local/bin/shell.sh
RUN chmod 777 /usr/local/bin/shell.sh
CMD /usr/local/bin/shell.sh
ENTRYPOINT /bin/bash
Согласно Docker документации here
CMD будет переопределен при запуске контейнера с альтернативными аргументами, поэтому, если я запустил изображение докеров с некоторыми аргументами, как показано ниже, не будет выполнять инструкции CMD. :(
sudo docker run -it --entrypoint=/bin/bash <imagename>
Но это не будет выполнять инструкцию CMD, мой скрипт оболочки не будет выполнен. :( –
Это верно. У вас не может быть и того, и другого. Единственный другой вариант - сохранить ваш 'CMD'. Я добавил пример к моему ответу. – NZD
Но я тоже хочу выполнить свой скрипт, 't хочу выполнить его вручную. Это проблема. –