У меня странная ошибка в пользовательском образе докера. Хост-система - centos 7. 4 с помощью Docker 17.12.0-ce, в то время как образ основан на centos 7.2 с apache и имеет собственное приложение, работающее на cgi. Когда создается новый контейнер, он работает нормально, но при перезапуске контейнера (либо с помощью флага restart = always, либо вручную) он продолжает перезапускать bin apache в конце сценария, запущенного CMD.
журналы apache (которые находятся в томе), они показывают эти строки при каждом перезапуске apache:
[auth_digest:error] [pid 19] (17)File exists: AH01762: Failed to create shared memory segment on file /run/httpd/authdigest_shm.19
[auth_digest:error] [pid 19] (17)File exists: AH01760: failed to initialize shm - all nonce-count checking, one-time nonces, and MD5-sess algorithm disabled
[:emerg] [pid 19] AH00020: Configuration Failed, exiting
Погуглите коды ошибок, это похоже на проблему с папкой / run / httpd, поэтому я решил запустить терминал bash, чтобы проверить, есть ли возникнут какие-либо проблемы, и в тот самый момент, когда я врезаюсь в контейнер, ошибки прекращаются, я получаю следующие строки:
[auth_digest:notice] [pid 34] AH01757: generating secret for digest authentication ...
[lbmethod_heartbeat:notice] [pid 34] AH02282: No slotmem from mod_heartmonitor
[core:warn] [pid 34] AH00098: pid file /run/httpd/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[mpm_prefork:notice] [pid 34] AH00163: Apache/2.4.6 (CentOS) mod_perl/2.0.10 Perl/v5.16.3 configured -- resuming normal operations
[core:notice] [pid 34] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
и apache начинает отвечать, поскольку ничего не произошло.
Я тестировал это поведение несколько раз, это не так. зависящие от времени (это может быть 5 минут или 1 час с сообщениями об ошибках, они прекратятся, как только я войду в систему).
Итак, у меня следующие вопросы:
С уважением.
PS: извините, если об этом уже спрашивали раньше, мне было очень трудно найти проблему с докером и "/ run", поскольку Google игнорирует косую черту.
Итак, методом проб и ошибок я нашел способ решить эту проблему, но я совершенно не понимаю, почему это происходит.
Я добавил в начале сценарий, запускаемый CMD, инструкция по удалению содержимого / run / httpd:
1 #!/bin/bash
2
3 rm -rf /run/httpd/*
4
5 [... continue execution as before ...]
Кажется, у этой меры нет недостатков, поэтому я буду ее придерживаться.
Я все равно буду более чем счастлив, если кто-нибудь может объяснить это поведение.
С уважением