docker/k8s容器優雅退出(python,go,java)

全棧工程師開發手冊 (作者:欒鵬)
架構系列文章

注意:docker 正常退出和異常退出都不會自動發起SIGTERM,java正常或異常退出,jvm會發起SIGTERM信號

docker kill 直接殺死容器進程
docker stop是向容器進程發送SIGTERM信號,本文介紹容器中的進程捕獲 SIGTERM 信號,優雅的退出。

github地址:https://github.com/626626cdllp/k8s/tree/master/test/docker-signal

先來了解一下信號

SIGINT

程序終止(interrupt)信號, 在用戶鍵入INTR字符(通常是Ctrl-C)時發出,用於通知前臺進程組終止進程。

SIGQUIT

和SIGINT類似, 但由QUIT字符(通常是Ctrl-)來控制. 進程在因收到SIGQUIT退出時會產生core文件, 在這個意義上類似於一個程序錯誤信號。

SIGTERM

程序結束(terminate)信號, 與SIGKILL不同的是該信號可以被阻塞和處理。通常用來要求程序自己正常退出,shell命令kill缺省產生這個信號。如果進程終止不了,我們纔會嘗試SIGKILL。

SIGSTOP

停止(stopped)進程的執行. 注意它和terminate以及interrupt的區別:該進程還未結束, 只是暫停執行. 本信號不能被阻塞, 處理或忽略.

添加退出處理邏輯

假設源dockerfile中定義的en

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章