背景介紹
最近在寫 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 |
參考總結
以上就是本文希望分享的内容,如果大家有什麼問題,歡迎在文章或者公衆号 - 跬步之巅留言交流。