我已经应用了互联网上所有可用的解决方案,但我仍然不能运行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守护进程正在运行吗?


当前回答

将所有权分配给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的回答

其他回答

首先,尝试使用sudo,因为当前用户可能没有访问权限与docker守护进程通信,即:

道克/ var /管理/袜子。

如果它仍然不能工作,那么,在安装之后,简单地停止docker守护进程:

sudo service docker stop

并且,运行以下命令在后台启动守护进程:

sudo nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

为了使使用Docker更容易,您应该将您的用户名添加到 Docker users组。方法将用户添加到组中 命令如下:

sudo usermod -aG docker $USER

此外,docker Linux安装后步骤的官方文档中也提到了这一步。

Ubuntu 16.04用户可以执行以下步骤:

在文件/lib/systemd/system/docker中。服务的改变:

ExecStart=/usr/bin/dockerd fd://

to

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375

在文件/etc/init.d /码头工人的改变:

DOCKER_OPTS=

to

DOCKER_OPTS="-H tcp://0.0.0.0:2375"

然后重启你的机器,开始使用docker。

我看了所有的答案,没有找到任何接近我的情况。最后,问题是docker在我的系统上安装了两次,一次是通过snap,另一次是通过便利脚本。所以,如果有人遇到这个问题,一定要检查docker没有安装在多个地方,因为这会导致一些非常奇怪的行为。

2022的解决方案

这工作在我身边:

在你的卷中添加以下内容:

volumes:
 - "/var/run/docker.sock:/var/run/docker.sock"

之后,执行以下命令

 sudo  chown 1000:1000 /var/run/docker.sock

请注意1000是用户的ID。要了解它,执行以下命令:

id

或者,如果$USER包含你的用户名:

 sudo  chown $USER:$USER /var/run/docker.sock

对于所有在安装Docker时遇到问题的人。

一个指向docker服务失败的错误,执行下面的命令。

$ sudo apt update

$ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

$ sudo apt update

$ apt-cache policy docker-ce

$ sudo apt install docker-ce

在我的情况下,当做sudo dockerd——debug时,它显示了这个错误:“启动守护进程失败:初始化网络控制器错误:获取控制器实例错误:创建NAT链失败DOCKER: Iptables not found”

为了解决这个问题,我输入:

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo systemctl start docker.service

欲了解更多详情,请访问:https://forums.docker.com/t/failing-to-start-dockerd-failed-to-create-nat-chain-docker/78269