我已经应用了互联网上所有可用的解决方案,但我仍然不能运行Docker。

我想在我的服务器上使用Scrapy Splash。

下面是我运行的命令的历史。

docker run -p 8050:8050 scrapinghub/splash
sudo docker run -p 8050:8050 scrapinghub/splash
sudo usermod -aG docker $(whoami)
sudo docker run -p 8050:8050 scrapinghub/splash
newgrp docker
sudo docker run -p 8050:8050 scrapinghub/splash
reboot
sudo docker run -p 8050:8050 scrapinghub/splash
docker run -p 8050:8050 scrapinghub/splash

你可以看到我试图重新启动我的服务器,但它没有帮助。

参见ps -aux | grep docker的输出

root@mani:/var/www/html# ps aux | grep docker
root      8524  0.0  0.8 127904 13964 ?        Ssl  17:21   0:00 /usr/bin/dockerd --raw-logs
root      8534  0.0  0.3  90588  5012 ?        Ssl  17:21   0:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
root      8543  0.0  0.0   8812   764 pts/1    S+   17:21   0:00 grep --color=auto docker
root     16356  0.0  0.0  17200   964 pts/1    S    17:14   0:00 newgrp docker
root     20080  0.0  0.0  17200   964 pts/1    S    17:06   0:00 newgrp docker
root     30221  0.0  0.0  17200   964 pts/1    S    17:09   0:00 newgrp docker

但它给出了错误:

unix:///var/run/ Docker .sock无法连接到Docker守护进程。docker守护进程正在运行吗?


当前回答

解决这个问题的简单方法,试试这个

sudo su
systemctl start docker
systemctl enable docker
systemctl restart docker

or

sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl restart docker

其他回答

重启系统对我有用。这可能是暂时的问题

将所有权分配给Docker Unix Socket

如果Docker的Unix套接字文件没有分配正确的所有权,也会出现“无法连接到Docker守护进程”错误。

1. 检查Docker Unix套接字的所有权:

sudo ls -la /var/run/docker.sock

2. 如有必要,授予用户所有权:

sudo chown [username]:docker /var/run/docker.sock

感谢Phonenixnap的回答

Ubuntu 22.04是我的操作系统。在进行了广泛的研究和浏览了大量网站后,我发现以非root用户运行Docker会创建一个不同的上下文。使用下面列出的命令解决了我的问题。

docker context ls 
docker context use default 

你可以试试这个:

systemctl start docker

这对我来说很有效。

附注:如果有命令你不能没有sudo之后,试试这个:

gpasswd -a $USER docker

export DOCKER_HOST=tcp://localhost:2375对于没有sudo访问权限和用户没有unix:///var/run/docker.sock访问权限的人来说是完美的