天天看點

docker的PID namespace

在Docker容器中的初始化程序(PID1程序)在容器程序管理上具有特殊意義。它可以被Dockerfile中的

ENTRYPOINT

CMD

指令所指明;也可以被

docker run

指令的啟動參數所覆寫。

  • 每個容器有獨立的PID名空間,
  • 容器的生命周期和其PID1程序一緻
  • 利用

    docker exec

    可以進入到容器的名空間中啟動程序
  • 容器的PID1程序需要能夠正确的處理SIGTERM信号來支援優雅退出。
  • 如果容器中包含多個程序,需要PID1程序能夠正确的傳播SIGTERM信号來結束所有的子程序之後再退出。
  • 確定PID1程序是期望的程序。預設sh/bash程序沒有提供SIGTERM的處理,需要通過shell腳本來設定正确的PID1程序,或捕獲SIGTERM信号。

繼續閱讀