無法刪除的 Container STATUS - Removal In Progress
同事回報,在執行重新部署後,Container 出現一個未見過的狀態:Removal In Progress,會造成後續持續部署失敗:
案例1:
案例2:
此 Container 會一直保持在此Removal In Progress,查詢到在 github 的回報中,有個案例回報長達12 weeks之久還在「刪除中...」的案例。先說,回報中的解法有效。
但我比較好奇的是,是何原因造成無法刪除,進行刪除 docker rm
指令:
訊息說明還算清楚,有個 .log 檔案被某個程序給咬住了。
下圖是正常的分層資料的資料夾,上圖是最後一個 .log 檔案被 Lock 造成無法刪除,而形成教科書沒教的 Removal In Progress 狀態。原本在 Server Core 想用 PowerShell 來找 lock file 的應用程式,後來發現有個 Server 內建指令 openfiles /query 能查詢,不過我查了是一片空白。突然想起了一位好久不見的朋友 Process Explorer,迅速抓出犯人:
把被 lock 的檔案名稱貼上去,噹噹,犯人是:dockerd.exe!
你可以手動在 File 進行 Close Handle 的動作。Docker Host 處於 Swarm Mode,為了萬一,還是乖乖進行 Swarm drain 與 dockerd.exe 服務停用、刪除(.log 檔案)、重新啟動的流程。啟動後原本 Removal In Progress 狀態的 Container 會自動不見。
.log 檔案被 dockerd.exe lock 的原因不明,處理的方式也不高明,未有更好解決前,似乎也只能這樣處理。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。