我們有運行的Docker容器作爲主進程(PID 1)。我們還通過systemd單元在Docker容器中啓動了我們的工作進程。我們的Docker容器使用CentOS 7.2。 我們已經配置了Docker 停止超時,以便我們可以處理在Docker容器內運行的工作進程的正常關閉。 當我們停止Docker容器時,我們可以看到SIGTERM被接收到了容器內運行PID 1的systemd進程。容器也等待我們配置的停止超時。 但是systemd進程沒有將這個SIGTERM轉發給我們已經開始使用systemd單元的工作進程。 從日誌看來,它看起來像systemd收到SIGTERM它試圖重新執行自己。我們嘗試在我們的systemd單元文件中添加KillMode = mixed,但它不適用於我們。爲什麼systemd進程在PID 1的docker容器中運行,未將SIGTERM轉發到docker stop上的子進程
有什麼辦法可以將SIGTERM從systemd進程轉發到子進程?
可能是一個有用的閱讀:https://engineeringblog.yelp.com/2016/01/dumb-init-an-init-for-docker.html –
從共享的文章,它看起來像普通的系統init(systemd在我們案例)應該能夠將SIGTERM轉發給子進程,但這在我們的例子中確實不會發生。我們想要使用systemd來進行設置。尋找將信號從systemd傳遞給子進程的方式。 – Sachin