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