背景介紹
最近在寫 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 |
容器暴力退出 |
容器正常退出 |
容器暫停 |
docker top | 報錯 | 報錯 | 正常顯示程式 |
docker stats |
CPU 使用率 = 0 |
CPU 使用率 = 0 |
CPU 使用率 = 0 |
docker events |
kill - signal=9 |
kill - signal=3 |
pause |
how to restart |
docker start |
docker start |
docker unpause |
參考總結
以上就是本文希望分享的內容,如果大家有什麼問題,歡迎在文章或者公眾號 - 跬步之巔留言交流。