| Anton8830 |  | 
| 
                Темы:
                
                    23
                
             
                Сообщения:
                
                    175
                
             
                Участник с: 16 ноября 2013
             | Доброго дня. Прошу помощи у знающих товарищей по systemd. Задача настроить запуск и работу dhcpd, находящегося в контейнере docker через сервис systemd Сделано 1. Создан образ на основе archlinux/base с dhpcd и его конфигом внутри Dockerfife 2. Образ запущен в контейнере с именем dhcpd 3. Cоздан сервис /etc/systemd/system/docker_dhcpd.service 4. Сервис включен. Проблема Запуск и остановка сервиса делают то, что и планировалось, но при падении процесса dhcpd ничего не происходит, сервис остается запущенным. Предпринятые действия В сервисе изменил тип Type=forking - получил цикличный перезапуск сервиса... Т. е. при старте, запускается контейнер, процесс умирает и systemd считает, что сервис упал, запускает ExecStop, в результате контейнер останавливается. Вопрос Как правильно настроить сервис, чтобы он отслеживал процесс dhcpd? | 
| vs220 |  | 
| 
                Темы:
                
                    22
                
             
                Сообщения:
                
                    8070
                
             
                Участник с: 16 августа 2009
             | Anton8830PIDFile указывать не пробовали? что то вроде и рестарт при отсутствии процесса /run/dhcpcd-%I.pidPIDFile=¶ Из закладок https://habr.com/ru/company/southbridge/blog/255845/ | 
| Anton8830 |  | 
| 
                Темы:
                
                    23
                
             
                Сообщения:
                
                    175
                
             
                Участник с: 16 ноября 2013
             | vs220 PIDFile пробовал, но проблема в том, что он не создается. Принудительно его создавать тоже пробовал - не прокатило. Restart=always приводит к тому, что сервис запускается, через секунду останавливается, запускается снова, останавливается и так по кругу... Реальный PIDFile, насколько я понимаю, создается внутри контейнера... | 
| vs220 |  | 
| 
                Темы:
                
                    22
                
             
                Сообщения:
                
                    8070
                
             
                Участник с: 16 августа 2009
             | Anton8830Ну его как бы процесс должен создавать, может как то с контейнером связано что системд его не видит Не имел дела с контейнерами посмотрите → Может при запуске в контейнере он находится не в /run а в /run контейнера  | 
| Anton8830 |  | 
| 
                Темы:
                
                    23
                
             
                Сообщения:
                
                    175
                
             
                Участник с: 16 ноября 2013
             | vs220 Эмм... Есть В нём реальный pid dhcpd.В таком подходе проблема следующая: при обновлении контейнера - этот путь изменится, тогда и сервис придётся переделывать... | 
| vs220 |  | 
| 
                Темы:
                
                    22
                
             
                Сообщения:
                
                    8070
                
             
                Участник с: 16 августа 2009
             | Anton8830Может тогда менять подход, запускать системд в контейнере и его сервисом dhcpd или еще как Интересно а так не прокатит? /run/docker/containerd/daemon/*/init.pid | 
| Anton8830 |  | 
| 
                Темы:
                
                    23
                
             
                Сообщения:
                
                    175
                
             
                Участник с: 16 ноября 2013
             | vs220 Запускать systemd внутри контейнера, конечно, можно, но тогда весь смысл контейнера нивелируется... Образы получаются тяжелыми и бессмысленными. /run/docker/containerd/daemon/*/init.pid может и прокатит, но только когда контейнер один. А если добавить второй, например с bind? Тогда - уже нет... | 
| vs220 |  | 
| 
                Темы:
                
                    22
                
             
                Сообщения:
                
                    8070
                
             
                Участник с: 16 августа 2009
             | Anton8830¯ \ _ (..) _ / ¯ Может кто еще что подскажет Пойти другим путем? https://habr.com/ru/post/270165/ | 
| Anton8830 |  | 
| 
                Темы:
                
                    23
                
             
                Сообщения:
                
                    175
                
             
                Участник с: 16 ноября 2013
             | vs220 Ну, docker вообще не совсем для ограничения прав (или совсем не для того). Он позволяет создать изолированную область, где работает нужное приложение, минимально зависимое от системы, позволяет не устанавливать в систему само приложение. Т. е. есть только базовая система и docker, а все остальное изолировано друг от друга в контейнерах. Не знаю, как ещё объяснить... Для меня dhcp и bind внутри контейнеров - просто для практики. Создать образ, запустить контейнер - у меня получилось. Теперь я пытаюсь сделать так, чтобы контейнеры запускались и процессы контролировались через systemd | 
| vasek |  | 
| 
                Темы:
                
                    48
                
             
                Сообщения:
                
                    11320
                
             
                Участник с: 17 февраля 2013
             | Не работаю с docker (вещь, конечно, очень интересная), но насколько мне известно, в данной ситуации, когда важно состояние одной ключевой службы/процесса (точнее, работа зависит от одного процесса), то создают docker-контейнер таким образом, чтобы он падал (завершал работу) с падением (завершением работы) этого основного процесса. А далее, если это необходимо, простой перезапуск контейнера (что то типа --restart=always). Хотя все зависит от поставленной задачи - иногда проще создать отдельный docker контейнер dhcpd (тогда проще и перезапуск). PS - хотя встречались и статейки с описанием контроля за процессами внутри контейнера, запуска приложений ... и возможен даже просмотр логов. 
                        Ошибки не исчезают с опытом - они просто умнеют
                     |