檢查詳細(xì)錯(cuò)誤日志,看更深層次的報(bào)錯(cuò):
journalctl -u docker.service --no-pager -n 50
停止相關(guān)進(jìn)程
sudo systemctl stop docker
sudo systemctl stop containerd
刪除殘留的 pid 文件
rm -rf /var/run/docker.pid
rm -rf /var/run/docker.sock
重新加載并啟動(dòng)
sudo systemctl daemon-reload
sudo systemctl start docker
SELinux/防火墻: 醫(yī)院常用的 CentOS 系統(tǒng)可能開(kāi)啟了 SELinux,嘗試臨時(shí)關(guān)閉看看:
setenforce 0
如果容器多且都卡住了,強(qiáng)制停止所有容器:
docker rm -f $(docker ps -aq)
強(qiáng)制停止 Docker 守護(hù)進(jìn)程(服務(wù)級(jí))
如果你發(fā)現(xiàn) systemctl stop docker 一直卡住不動(dòng)(就像你截圖中顯示的 stop-sigterm timed out),你需要從系統(tǒng)底層殺掉守護(hù)進(jìn)程:
第一步:直接殺掉 dockerd 進(jìn)程
sudo pkill -9 dockerd
sudo pkill -9 containerd
第二步:清理殘留的隔離進(jìn)程(Shim)
Docker 容器其實(shí)是由 containerd-shim 運(yùn)行的,有時(shí)候主進(jìn)程死了它們還活著:
ps -ef | grep docker-containerd-shim | awk '{print $2}' | xargs kill -9
- 徹底清理掛載點(diǎn)(針對(duì)重啟后無(wú)法啟動(dòng))
根據(jù)你之前的報(bào)錯(cuò),Docker 無(wú)法啟動(dòng)往往是因?yàn)閺?qiáng)制停止后,文件系統(tǒng)掛載點(diǎn)沒(méi)卸載干凈。這是最徹底的“強(qiáng)停”后遺癥處理法:
手動(dòng)卸載掛載目錄:
umount /var/lib/docker/overlay2/*/merged
清理網(wǎng)絡(luò)網(wǎng)橋:
ip link delete docker0
查看 docker.service文件是否存在:vi /usr/lib/systemd/system/docker.service