在Docker容器中的初始化程序(PID1程序)在容器程序管理上具有特殊意義。它可以被Dockerfile中的
ENTRYPOINT
或
CMD
指令所指明;也可以被
docker run
指令的啟動參數所覆寫。
- 每個容器有獨立的PID名空間,
- 容器的生命周期和其PID1程序一緻
- 利用
可以進入到容器的名空間中啟動程序docker exec
- 容器的PID1程序需要能夠正确的處理SIGTERM信号來支援優雅退出。
- 如果容器中包含多個程序,需要PID1程序能夠正确的傳播SIGTERM信号來結束所有的子程序之後再退出。
- 確定PID1程序是期望的程序。預設sh/bash程序沒有提供SIGTERM的處理,需要通過shell腳本來設定正确的PID1程序,或捕獲SIGTERM信号。