Как уже упоминалось @coderanger, контейнер имеет концепцию неизменности. То, что вы пытаетесь сделать, не является хорошей практикой в Kubernetes / контейнерных средах.
Но ...
Иногда это своего рода magi c требуется, чтобы держать самолет в полете ... Есть несколько вариантов, которые могут вам помочь:
1. Перестроить образ контейнера
Лучшее решение в этом случае - перестроить образ контейнера на основе текущего запущенного образа. Вы можете запустить этот образ отдельно от основной рабочей нагрузки, чтобы проверить изменения. Это лучший подход в этом случае, потому что вы сохраните изменения в изображении и хронологию для непрерывных обновлений.
2. Обходной путь для уничтожения pid
Я тестировал в контейнере, работающем flask с супервизором.
Вы можете использовать сигнал SIGHUP
для перезапуска процесс внутри вашего контейнера:
SIGHUP - Сигнал SIGHUP отключает процесс от родительского процесса. Это также может быть использовано для перезапуска процессов. Например, «killall -SIGHUP compiz» перезапустит Compiz. Это полезно для демонов с утечками памяти. ... SIGHUP P1990 Обнаружение зависания термина на управляющем терминале или прекращение процесса управления
Внутри вашего контейнера запустите:
kill -SIGHUP <PID>
или kill -1 <PID>
Источники: - http://man7.org/linux/man-pages/man7/signal.7.html https://www.linux.org/threads/kill-signals-and-commands-revised.11625/