高端 網(wǎng)站制作廣告營銷方式有哪幾種
工作中使用docker-compose部署容器,有時候會出現(xiàn)使用
docker-compose stop
或docker-compose down
命令想停掉容器,但是依然無法停止或者一直卡頓在停止中的階段,這種問題很讓人頭疼啊!
目錄
- 問題描述
- 問題排查
- 問題解決
- 終極殺招-最粗暴的解決方法
- 手動清理假死的docker服務
- 書籍推薦
- 書籍名稱:《Kubernetes 從入門到DevOps企業(yè)應用實戰(zhàn)》
- 內容介紹
- 適合人群
- 如何領書
- 自主購買
- 最后
問題描述
在使用docker部署服務時,偶爾會遇到docker服務假死的情況,使用的命令如下:
- docker ps 顯示容器狀態(tài)正常,但是對外服務已經(jīng)不可用不可訪問
- docker stats 沒有任何反應
- docker stop CONTAINER_ID 也沒有任何反應
- docker restart CONTAINER_ID 也沒有任何反應
- docker exec -it --user root CONTAINER_ID /bin/bash 也沒有任何反應
- docker logs CONTAINER_ID --tail 111 -f 也沒有任何反應
- docker-compose stop/down 命令也提示響應超時,不可用
問題排查
之前沒有遇到過這種問題,也是第一次,于是就各種信息都看一下,各種可能性也都考慮到位
猜測這種情況,可能是由于容器內部的問題導致服務無法正常運行,或者Docker守護進程本身出現(xiàn)了問題。
- 查看容器內部日志(我的容器日志也沒有問題)
- 使用以下命令查看容器內的stdout和stderr輸出,以獲取有關容器內部問題的更多信息。
docker logs CONTAINER_ID
- 使用-f選項可以實時跟蹤日志
docker logs -f CONTAINER_ID
- 檢查宿主機資源: 使用以下命令檢查宿主機的資源使用情況,確保資源(CPU、內存)沒有被耗盡(我的沒有問題)
docker stats
- 查看Docker守護進程狀態(tài)(我的容器依然處于運行狀態(tài))
- 檢查Docker守護進程的運行狀態(tài),確保它沒有出現(xiàn)問題。
sudo systemctl status docker
- 如果守護進程出現(xiàn)問題,可以嘗試重啟Docker服務
sudo systemctl restart docker
- 手動停止和啟動容器: 嘗試手動停止和啟動容器,看是否能夠解決問題。(我的問題么有解決啊😭)
docker stop CONTAINER_ID
docker start CONTAINER_ID
- 檢查端口沖突: 確保容器所使用的端口沒有被其他進程占用。(不可能,絕對不可能.jpg)
- 查看系統(tǒng)日志: 查看系統(tǒng)日志以獲取更多關于系統(tǒng)或Docker的問題的信息。(說實話么有看出來什么問題)
dmesg | grep -i docker
- 查看網(wǎng)絡配置(正常的網(wǎng)絡狀況,網(wǎng)絡配置也沒有修改)
- 檢查Docker網(wǎng)絡配置,確保網(wǎng)絡正常。
docker network ls
- 查看容器的網(wǎng)絡配置
docker inspect CONTAINER_ID | grep NetworkMode
-
查看防火墻設置: 如果使用防火墻,確保容器所需的端口沒有被阻塞。
-
嘗試重啟Docker服務: 如果以上方法都沒有解決問題,可以嘗試重啟整個Docker服務。(終極大招,管用!)
sudo systemctl restart docker
問題解決
終極殺招-最粗暴的解決方法
- 重啟docker(慎用):
sudo systemctl restart docker
要注意,這個操作會把所有的docker服務無差別的重啟,慎用
手動清理假死的docker服務
- 找到假死的docker服務:執(zhí)行
docker ps
命令找到容器ID【CONTAINER_ID】 - 先嘗試使用docker自帶的命令停止容器:
docker stop 【CONTAINER_ID】
發(fā)現(xiàn)停不掉 - 手動查找docker目錄下的容器信息
- docker默認目錄:/var/lib/docker
- 所有docker容器的信息都掛載在/var/lib/docker/containers目錄下
- 通過【CONTAINER_ID】找到該假死服務的目錄
ll /var/lib/docker/containers | grep 【CONTAINER_ID】
cd /var/lib/docker/containers
- 刪除該容器
rm -rf 目錄名
這里刪除可能會報下面的錯誤,因為你的容器還掛載了其他目錄,信息如下: rm:無法刪除"/var/lib/docker/containers/目錄名/secrets":設備或資源忙無法刪除"/var/lib/docker/containers/目錄名/shm": 設備或資源忙
這個時候查一下容器對應的掛載目錄
cat /proc/mounts |grep "docker" |grep "【CONTAINER_ID】"
然后先取消掛載
umount /data/sys/var/docker/containers/掛載目錄/secretsumount /data/sys/var/docker/containers/掛載目錄/shm
如果這一步 unmout 不了,可以嘗試找到使用該目錄的進程
lsof |grep "掛載目錄"
如果有相關進程,記錄相關的進程號直接 kill -9 進程號
ll /var/lib/docker/containers | grep 【CONTAINER_ID】
這個時候再重新執(zhí)行刪除目錄命令
cd /var/lib/docker/containers
rm -rf 目錄名
這個時候就可以刪掉了
- 再次嘗試通過docker的命令停止容器
docker stop 【CONTAINER_ID】
或
docker rm -f 【CONTAINER_ID】或docker kill --signal=SIGINT 【CONTAINER_ID】
如果還是無法停掉改服務,可以按如下步驟:
使用linux進程管理命令來結束容器進程
-
先找到該進程:
ps -ef | grep【CONTAINER_ID】
-
強制殺掉篩選出來的進程信息:
kill -9 PID
- 再次檢查docker服務狀態(tài)
docker ps
先可以看到該服務已經(jīng)被干掉了。
如果說按照這個操作依然無法解決docker假死問題,那么我還是建議大家采用上面最粗暴的方式去解決,但是要注意,這個操作會把所有的docker服務無差別的重啟。
書籍推薦
- 源自近200萬學員熱捧的Kubernetes實戰(zhàn)課程
- 作者研究和實踐容器技術超過10年歷時三年精心打造,涵蓋大量一線大廠實戰(zhàn)項目
- 理論基礎+命令詳解+眾多應用場景+企業(yè)級案例+自動化DevOps運維知識體系
書籍名稱:《Kubernetes 從入門到DevOps企業(yè)應用實戰(zhàn)》
內容介紹
本書作者從事容器技術方面的研究和實踐已近十年,還是一位Kubernetes講師和社區(qū)貢獻者,其錄制的Kubernetes視頻課入選了工信部人才交流中心官方認證課程,本書是在總結多年來不斷改進的視頻課的基礎上精心編撰而成,內容經(jīng)過學員檢驗,值得依賴。
本書除介紹Kubernetes本身,還介紹了很多周邊相關技術,比如,Jekins、CI\CD、Istio、Prommethues、Ingress、K3s等,有助于讀者整合運用這些技術,真正解決生產(chǎn)實踐中遇到的問題。
總之,這是一本理解兼?zhèn)鋵嵺`,注重實操的Kubernetes好書,期待讀者從本書中收獲多多。
適合人群
本書由淺入深,有趣有料,適合想提升代碼編寫水平的大學生、求職者、編程愛好者閱讀,也適合有1~2年開發(fā)經(jīng)驗的程序員參考,還可以作為各類培訓班的培訓教材。
如何領書
————————————————
本次本篇文章送書 🔥2-3本 評論區(qū)抽2-3位小伙伴送書
📆 活動時間:截止到 2023-12-09 20:00:00
🎁抽獎方式:利用網(wǎng)絡公開的在線抽獎工具進行抽獎
💡參與方式:關注、點贊、收藏,評論 “人生苦短,K8S超簡單”
根據(jù)文章閱讀量的多少來安排送書的本數(shù)。
————————————————
🔥 注:活動結束后,會私信中獎粉絲的,各位注意查看私信哦!
自主購買
小伙伴也可以訪問鏈接進行自主購買哦~
直達京東購買鏈接🔗:《Kubernetes 從入門到DevOps企業(yè)應用實戰(zhàn)》
最后
- 好看的靈魂千篇一律,有趣的鯤志一百六七!
- 如果覺得文章還不錯的話,可以點贊+收藏+關注 支持一下,鯤志的主頁 還有很多有趣的文章,歡迎小伙伴們前去點評
- 如果有什么需要改進的地方還請大佬指出?