📌  相关文章
📜  无法启动守护进程:找到 pid 文件,确保 docker 未运行或删除 var run docker.pid - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:40:07.103000             🧑  作者: Mango

无法启动守护进程:找到 pid 文件,确保 docker 未运行或删除 var run docker.pid

这个错误通常会在启动 Docker 守护进程时出现。它表明 Docker 已经在运行中,但无法在指定的 PID 文件中找到相关的进程。下面将为您介绍可能导致此错误的原因及如何解决它。

原因
  1. Docker 已经在运行中,但 PID 文件已被删除或移动
  2. Docker 已经在运行中,但 PID 文件中的进程 ID 不正确
  3. Docker 进程已经崩溃或被强制杀死,并未清理 PID 文件,导致启动失败
  4. Docker 守护进程启动失败,由于端口冲突或其他错误
解决方法

方法一:停止并删除 Docker 进程

如果 Docker 已经运行并且您需要重新启动它,则可以使用以下命令停止 Docker 进程并删除 PID 文件:

sudo service docker stop
sudo rm /var/run/docker.pid

然后重新启动 Docker 守护进程:

sudo service docker start

方法二:手动清理 PID 文件

使用以下命令手动清理 PID 文件,然后重新启动 Docker 守护进程即可:

sudo rm /var/run/docker.pid
sudo service docker start

方法三:清理未清理的 Docker 进程

如果您尝试启动 Docker 守护进程时接收到此错误消息,则可能存在崩溃或未正常关闭的 Docker 进程。您需要先清理这些进程。首先需要查找所有运行中的 Docker 进程:

sudo docker ps

然后使用以下命令停止所有 Docker 容器:

sudo docker stop $(sudo docker ps -aq)

最后清理旧 Docker 进程和 PID 文件,然后重新启动 Docker 守护进程:

sudo rm -f /var/run/docker.pid && sudo rm -rf /var/lib/docker
sudo service docker restart

方法四:检查端口冲突

如果上述方法均无法解决您的问题,则可能存在 Docker 端口冲突。可以使用以下命令检查 Docker 监听的端口:

sudo netstat -tulpn | grep docker

如果您发现 Docker 端口(默认情况下为 2375 和 2376)与其他进程发生冲突,则需要更改 Docker 的监听端口。您可以在 /etc/default/docker 文件中更新以下内容:

DOCKER_OPTS="-H tcp://0.0.0.0:1234 -H unix:///var/run/docker.sock"

在配置文件中,将 1234 更改为您要使用的新端口。然后重新启动 Docker 守护进程。

结论

此错误通常发生在 Docker 进程启动失败或出现异常情况时。您可以执行上述任何一个方法来解决这个问题。