最近在使用 Docker 進行開發時,遇到了一個奇怪的問題:運行 docker ps 或 docker images 命令時會卡死。
$ docker ps
上面的命令執行后,控制臺就沒有任何輸出,相當于卡住了。通過 Ctrl+C 終止命令后,再次嘗試運行,同樣出現卡死現象。
經過排查和嘗試,最終發現是因為 Docker daemon 運行時使用的存儲驅動產生了沖突。而這個沖突是由之前安裝的其他存儲驅動造成的。
$ docker info
通過查看 Docker daemon 的信息,可以看到當前使用的存儲驅動是哪個。而在我的環境中,是 overlay2。
為了解決這個問題,需要先停止 Docker daemon,并清空之前的存儲驅動配置。然后重新啟動 Docker daemon 即可。
$ systemctl stop docker $ rm -rf /var/lib/docker $ systemctl start docker
上述命令分別是停止 Docker daemon、刪除存儲驅動配置和重新啟動 Docker daemon。執行后再次運行 docker ps 命令,發現不再卡死了。
總結:使用 Docker 開發時,出現卡死問題也許并不少見,但一定要耐心去排查,找到問題所在,才能解決。同時,也要注意 Docker daemon 運行時相關的存儲配置,避免產生沖突。