Как перезапустить apache2 без сбоя контейнера docker?
Я использую в качестве базы PHP docker container С помощью тега:
php:5.6-apache
когда я пытаюсь перезапустить apache2 внутри контейнера, контейнер останавливается:
root@phalconapp:/var/www/html# service apache2 restart
Restarting web server: apache2Terminated
root@phaclonapp:/var/www/html#
me@myLocalComputer:
как перезапустить apache2 без остановки контейнера?
Я хочу поиграть с контейнером и настроить его, прежде чем я помещу свои изменения в dockerfile. Я хочу установить некоторое расширение, и для их работы мне нужно перезапустить apache для внесения изменений эффект.
Это файл журнала через:
Attaching to dltasklight_phlaconapp_1
phlaconapp_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
phlaconapp_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
phlaconapp_1 | [Mon May 30 10:19:24.556154 2016] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/5.6.22 configured -- resuming normal operations
phlaconapp_1 | [Mon May 30 10:19:24.556181 2016] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
phlaconapp_1 | [Mon May 30 10:21:11.754993 2016] [mpm_prefork:notice] [pid 1] AH00169: caught SIGTERM, shutting down
dltasklight_phlaconapp_1 exited with code 0
5 ответов
Если вы используете apache в качестве основной службы для сохранения запущенного контейнера, вы не можете перезагрузить его. Просто потому, что вы создали образ и установили CMD с ним.
основная цель CMD-предоставить значения по умолчанию для выполняющегося контейнера. Эти значения по умолчанию могут включать исполняемый файл, или они могут опустить исполняемый файл, в этом случае необходимо также указать инструкцию ENTRYPOINT.
попробуйте перезагрузить без перезапуска службы:
/etc/init.d/apache2 reload
моим решением было выйти из моей оболочки bash в контейнер и просто перезапустить контейнер вне Docker. Поскольку Apache установлен в качестве основной службы, это также перезапускает Apache и не приводит к сбою контейнера.
docker restart <container>
но перед тем, как идти, ваш apache терпит неудачу при перезапуске? Вот как он выходит? В этом случае, пожалуйста, сделайте это, установив правильные конфигурации и взглянув на эти журналы.
один из методов, который вы можете попробовать, - это войти в контейнер (bash), и у вас всегда может быть настройки совершение в точке, где она работает. Затем вы можете изменить изображение базового контейнера на это.
У меня были обходные пути для подобных ситуаций, создавая новые изображения из эти совершено те, которые используют разные ENTRYPOINT's в моей Dockefile.
Я хочу настроить контейнер, мне нужно установить некоторое расширение и для их работы мне нужно перезапустить apache для внесения изменений эффект.
Это противоречит неизменяемому принципу инфраструктуры Докера. IMHO, вы используете контейнер docker, похожий на полномасштабную виртуальную машину. Вместо этого я бы предложил вам рассматривать изображение docker как окончательный артефакт и его версию. Примечание: это только мое скромное мнение, вы можете иметь действительное используйте то, о чем я не знаю, что мне любопытно узнать.
sudo docker kill --signal="USR1" your_appache_container
другие сигналы, которые можно использовать для достижения следующих целей :
Стоп-Сигнала: термин
Перезапуска Сигнала: USR1
Перезапустить Сейчас Сигнал:АП
Изящный Стоп-Сигнал:лебедка
от: этот сайт