天天看點

聊一聊容器暫停退出

背景介紹 

最近在寫 docker 相關教程,過程中發現容器暫停退出竟然有 docker kill、docker stop 和 docker pause 三種方式,今天就來看下三者間的差別。

輔助指令

  • docker top - 檢視容器程序
  • docker event - 檢視容器相關事件
  • docker stats - 檢視容器資源使用率

準備工作

1. 啟動容器

docker run --name nginx-kill -d nginx
docker run --name nginx-stop -d nginx
docker run --name nginx-pause -d nginx      
聊一聊容器暫停退出

2. 檢視容器程序

docker top nginx-kill
docker top nginx-stop
docker top nginx-pause      
聊一聊容器暫停退出

3. 檢視資源使用

docker stats nginx-kill nginx-stop nginx-pause      
聊一聊容器暫停退出

4. 打開事件監聽

docker events      
聊一聊容器暫停退出

開始分析

1. docker kill

docker kill nginx-kill
docker top nginx-kill
docker stats nginx-kill
docker ps -a      
聊一聊容器暫停退出

docker top 指令報錯,CPU 和記憶體使用率為 0,容器狀态為 Exited,退出碼為 137。

相關事件:kill -> die

聊一聊容器暫停退出

2. docker stop

docker stop nginx-stop
docker top nginx-stop
docker stats nginx-stop
docker ps -a      
聊一聊容器暫停退出

docker top 指令報錯,CPU 和記憶體使用率為 0,容器狀态為 Exited,退出碼為 0。

相關事件:kill -> die -> stop

聊一聊容器暫停退出

3. docker pause

docker pause nginx-pause
docker top nginx-pause
docker stats nginx-pause
docker ps -a      
聊一聊容器暫停退出

docker top 指令正常,CPU 使用率為 0,記憶體使用率大于0,容器狀态為 Pause。

相關事件:pause

聊一聊容器暫停退出

結果分析

指令 docker kill docker stop docker pause
docker ps -a

容器暴力退出

未儲存的資訊會丢失

退出碼 137

容器正常退出

無消息丢失

退出碼 0

容器暫停
docker top 報錯 報錯 正常顯示程序
docker stats

CPU 使用率 = 0

記憶體使用率 = 0

CPU 使用率 = 0

記憶體使用率 = 0

CPU 使用率 = 0

記憶體使用率 > 0

docker events

kill - signal=9

die

kill - signal=3

die

stop

pause
how to restart

docker start

docker restart

docker start

docker restart

docker unpause

參考總結

以上就是本文希望分享的内容,如果大家有什麼問題,歡迎在文章或者公衆号 - 跬步之巅留言交流。