docker服務假死解決方案

2021-10-05 06:20:35 字數 1897 閱讀 1154

簡介

本文內容有

1、手動清理假死的docker服務

1.1 找到假死的docker服務

執行docker ps命令找到容器id【container_id】

1.2 先嘗試使用docker自帶的命令停止容器

docker stop 【container_id】發現停不掉

1.3 手動查詢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/掛載目錄/secrets

umount /data/sys/var/docker/containers/掛載目錄/shm

如果這一步 unmout 不了,可以嘗試找到使用該目錄的程序

lsof |grep "掛載目錄"

如果有相關程序,記錄相關的程序號直接 kill -9 程序號

這個時候再重新執行刪除目錄命令

ll /var/lib/docker/containers | grep 【container_id】

cd /var/lib/docker/containers

rm -rf 目錄名

這個時候就可以刪掉了

1.4 再次嘗試通過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

1.5 再次檢查docker服務狀態

docker ps

可以看到該服務已經被乾掉了。

1.6 最粗暴的解決方案如下

直接停止docker.service,重啟後自然就好了,如果服務太多,我不建議這樣使用,太慢了,而且影響其他服務。

sudo service restart docker

Docker 磁碟佔滿解決方案

2020 11 16 發現線上服務訪問不了報以下錯誤 登入伺服器df h 檢視docker的overlay已用 100 然後查詢 linux 系統最大的10個檔案 find type f print0 xargs 0 du sort n tail 10 cut f2 xargs i du sh 找出...

「產品」 「服務」 「解決方案」

如題,是關於一些概念的文章。但常常會有同學對這三個含糊不清,甚至混淆。個人認為,是因為這些概念之間很多重疊的地方,但是又並沒有去細緻的研究它們的細微區別。我是從it的視角出發來研究這三者的區別,但是很顯然,這三個概念並不僅僅侷限於某乙個領域。所謂產品,通常是指乙個公司或者研究院開發出來的能夠提供一定...

Docker 監控之 SaaS 解決方案

過去的一年中,關於 docker 的話題從未斷過,而如今,從嘗試 docker 到最終決定使用 docker 的轉化率依然在逐步公升高,關於 docker 的討論更是有增無減。另一方面,大家的注意力也漸漸從 docker 是什麼 轉移到 實踐 docker 與 監控 docker 上。本文 劉斌博文...