无法连接到unix上的Docker守护程序:/var/run/docker.sock.docker守护程序是否正在运行?

Uma*_*air 94 linux ubuntu docker ubuntu-14.04

我已经应用了互联网上的所有解决方案但仍然无法运行Docker.

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

这是history我跑的命令.

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
Run Code Online (Sandbox Code Playgroud)

您可以看到我也尝试重启我的服务器,但它没有帮助.

看到的输出 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
Run Code Online (Sandbox Code Playgroud)

H.G*_*Gmz 96

你可以尝试这个:

systemctl start docker
Run Code Online (Sandbox Code Playgroud)

它对我来说很好.

Ps:如果有没有sudo你不能做的命令,试试这个:

gpasswd -a $USER docker
Run Code Online (Sandbox Code Playgroud)

  • ``sudo service docker start * 启动 Docker: docker``` 是我的解决方案。 (42认同)
  • 当我运行“systemctl start docker”时,我得到“系统尚未使用 systemd 作为 init 系统(PID 1)启动”。无法操作。` (15认同)
  • 在 Ubuntu 22.04 上,“systemctl start docker”和“sudo service docker start”都不适合我——我仍然收到相同的错误消息。 (9认同)
  • 运行第一个命令,我收到一个错误:`无法启动docker.service:单元docker.service被屏蔽.所以,我必须运行以下:`systemctl unmask docker.service``systemctl unmask docker.socket``systemctl start docker.service` (5认同)
  • 这是因为您尝试在不使用 systemd 作为“进程管理器”的发行版(或 alpine 容器)中运行此命令。systemctl 是来自 systemd 的命令,因此不起作用。你的环境是什么? (4认同)
  • 对于 WSL ********在 DOCKER DESKTOP ******* 资源 --> WSL 集成 启用与我的默认 WSL 发行版的集成并启用与其他发行版的集成 (2认同)

Sad*_*ula 53

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

docker context ls 
Run Code Online (Sandbox Code Playgroud)
docker context use default 
Run Code Online (Sandbox Code Playgroud)

  • 这就是我在 Pop OS 22.04 上所做的事情。 (3认同)
  • 这是唯一对我有用的解决方案,2023,ubuntu20 (2认同)
  • 小时。几个小时、几个小时、几个小时,我才偶然发现了这个答案。谢谢你,真诚的。2023 年 3 月,这里也发布了 OS 22.04。这就是答案。我以某种方式创建了 docker 并将其锁定到我的主文件夹中的不同“上下文”中。(重新)将其设置为默认值修复了它。谢谢你,谢谢你,谢谢你 (2认同)
  • 也适用于 Fedora (2认同)

Wil*_*eng 50

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

sudo su
systemctl start docker
systemctl enable docker
systemctl restart docker
Run Code Online (Sandbox Code Playgroud)

  • systemctl 重新启动 docker (4认同)
  • 不要忘记以上帝权限(又名“root”用户)执行此操作: sudo su (4认同)

小智 44

I just hit this after doing a fresh install of DOCKER from the main docs. The problem for me was that immediately after the install, the service is not running.

These commands will help you to make sure docker is up and running for your run command to find it:

$ sudo service --status-all 
$ sudo service docker start
$ sudo service docker start
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用。在 wsl2 中 (18认同)
  • 我认为不需要第二个 sudo service docker start 。前两行对我来说已经足够了。您可以编辑您的答案吗? (3认同)

小智 39

如果docker没有干净地关闭,您可能会收到此错误.以下答案适用于docker snap包.

运行snap logs docker并查找以下内容:

Error starting daemon: pid file found, ensure docker is not running or delete /var/snap/docker/179/run/docker.pid
Run Code Online (Sandbox Code Playgroud)

删除该文件并重新启动docker对我有用.

rm /var/snap/docker/179/run/docker.pid
snap stop docker
snap start docker
Run Code Online (Sandbox Code Playgroud)

确保将"179"替换为相应的版本号

  • 我怎样才能防止这种情况发生?每次我打开电脑时,我都必须删除docker.pid! (4认同)

Pin*_*Woo 22

在此处输入图片说明

我只是忘记在我的 mac 中运行 Docker 桌面,运行 Docker 桌面后,你会很高兴。


Rak*_*lam 22

它对我有用:

sudo systemctl unmask docker
sudo systemctl start docker
Run Code Online (Sandbox Code Playgroud)


Yas*_*kar 19

赶紧跑

sudo dockerd
Run Code Online (Sandbox Code Playgroud)

你会好起来的.

  • 也在运行 Ubuntu 的 wsl2 上为我工作。 (28认同)
  • 谢谢!这给了我更多的信息以及为什么 docker 没有启动的实际错误:`无法启动守护进程:初始化网络控制器时出错:获取控制器实例时出错:无法在 DOCKER-ISOLATION-STAGE-1 链中添加返回规则` ,我可以通过将[Debian中的iptables切换为nftables](https://forums.docker.com/t/failing-to-start-dockerd-failed-to-create-nat-chain-docker/ 78269/2)。 (8认同)
  • 它对我的 wsl2 也有帮助 (8认同)
  • 这是唯一对我有用的命令。我认为荒谬的是,必须跳很多圈才能使Docker启动并运行。 (4认同)
  • 它给我错误`启动守护程序时出错:未装入设备cgroup` (2认同)
  • 谢谢,它对我有用!@fepegar 还告诉我安装可能不正确。我该如何修复它? (2认同)

Vik*_*ade 17

在 Ubuntu 22 上,“ sudo service docker start ”对我有用。

vikaspiprade@AUMEL-P7750-VP:~$ sudo docker run hello-world
docker: Cannot connect to the Docker daemon at 
unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
vikaspiprade@AUMEL-P7750-VP:~$ sudo /var/run/docker.sock
sudo: /var/run/docker.sock: command not found
vikaspiprade@AUMEL-P7750-VP:~$ /var/run/docker.sock
-bash: /var/run/docker.sock: Permission denied
vikaspiprade@AUMEL-P7750-VP:~$ sudo service docker stop
* Docker already stopped - file /var/run/docker-ssd.pid not found.
vikaspiprade@AUMEL-P7750-VP:~$ sudo service docker start
* Starting Docker: docker                                                                                       
[ OK ]
vikaspiprade@AUMEL-P7750-VP:~$
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


moh*_*08p 16

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

如果它仍然无法正常工作,那么,在安装之后,只需将docker守护程序停止为,

$ sudo service docker stop
Run Code Online (Sandbox Code Playgroud)

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

$ sudo nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

为了更轻松地使用Docker,您应该将您的用户名添加到Docker用户组.通过在末尾添加用户名,可以使用下面的命令将用户添加到组中

$ sudo usermod -aG docker $USER
Run Code Online (Sandbox Code Playgroud)

此外,此步骤在docker的官方文档中提及Linux的安装后步骤(https://docs.docker.com/engine/installation/linux/linux-postinstall/)

Ubuntu的16.04的用户可以按照以下步骤,

内部文件/lib/systemd/system/docker.service更改: ExecStart =/usr/bin/dockerd fd:// with ExecStart =/usr/bin/dockerd -H tcp://0.0.0.0:2375

内部文件/etc/init.d/docker更改:

DOCKER_OPTS = 使用 DOCKER_OPTS =" - H****tcp://0.0.0.0:2375 "

然后重新启动计算机.并且,开始玩docker.

  • 警告任何遵循此建议的人,“-H tcp://0.0.0.0:2375”会通过网络公开未加密的 root 登录,无需任何密码。 (3认同)

小智 13

这对我来说很好用..!

服务 docker 重启


小智 12

如果您使用的是 MAC,只需在 finder 中输入 docker 即可自动解析。


小智 11

在 Ubuntu 20.04 和 Docker 版本 20.10.11 上,作为非 root 用户,运行:

sudo service docker start
Run Code Online (Sandbox Code Playgroud)

然后检查状态

sudo service docker status
Run Code Online (Sandbox Code Playgroud)

演出

* Docker is running
Run Code Online (Sandbox Code Playgroud)

但尝试任何 docker 命令,例如

docker images
Run Code Online (Sandbox Code Playgroud)

显示相同的错误

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Run Code Online (Sandbox Code Playgroud)

运行下面的命令可以解决它

sudo service docker restart
Run Code Online (Sandbox Code Playgroud)

重启解决了,启动也没有


小智 9

关闭 docker will pull a container 后我遇到了这个问题docker pull mongo。起初我遇到了奇怪的错误,所以我清除了 dockersudo apt-get purge docker.io并重新安装了sudo apt-get install docker.io......所有这些都没有做。我什至无法运行 hello-world 容器。至少对我来说正确的解决方法是:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service
Run Code Online (Sandbox Code Playgroud)

在此之后,我可以拉 mongo 并运行 hello world。

干杯!


Inn*_*gbo 8

这通常发生在您可能没有停止泊坞的情况下.

解决

service docker stop
cd /var/run/docker/libcontainerd
rm -rf containerd/*
rm -f docker-containerd.pid
service docker start
Run Code Online (Sandbox Code Playgroud)

然后"docker run ...."下载你的图像并像往常一样启动容器


Mem*_*eng 8

我想如果您使用带有 GUI 的 WSL,那么您可以尝试

sudo /etc/init.d/docker start
Run Code Online (Sandbox Code Playgroud)


Abd*_*leh 8

2022年解决方案

我身边的这项工作:

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

volumes:
 - "/var/run/docker.sock:/var/run/docker.sock"
Run Code Online (Sandbox Code Playgroud)

之后执行以下命令

 sudo  chown 1000:1000 /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

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

id
Run Code Online (Sandbox Code Playgroud)

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

 sudo  chown $USER:$USER /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)


kar*_*san 7

这是由于 docker 尚未启动而发生的。

请检查docker状态

$ sudo systemctl status docker

然后启动并启用docker并重新检查状态

$ sudo systemctl start docker && sudo systemctl enable docker && sudo systemctl status docker
Run Code Online (Sandbox Code Playgroud)

就是这样。现在检查 docker 的最后一步工作正常

$ sudo docker run hello-world
Run Code Online (Sandbox Code Playgroud)


Moh*_*ari 6

这是在 Linux 上对我有用的解决方案

systemctl start docker.


Kau*_*k J 6

对于Linux运行

sudo dockerd

但是,如果您使用 Mac 版 Docker Client,它将无法工作。尝试下面的代码

$socat TCP-LISTEN:2376,reuseaddr,fork UNIX-CLIENT:/var/run/docker.sock

https://forums.docker.com/t/using-pycharm-docker-plugin-with-docker-beta/8617/9

该解决方法向世界开放端口 2376...由于未启用 TLS,这是一个坏主意,因为同一网络上的任何人都可以劫持您的 docker 守护进程


小智 5

我在root上运行并在下面尝试过,它有效:

service docker start

export DOCKER_HOST="tcp://0.0.0.0:2375"
Run Code Online (Sandbox Code Playgroud)

  • 如果这在您的主机上有效,那么您实际上没有root密码。有权访问该端口的任何人都可以以root用户身份在主机上运行命令。 (3认同)

Kar*_*son 5

这可能与硬盘驱动器上没有剩余磁盘空间有关。确保设备上有剩余空间,如果没有剩余空间,Docker 将无法启动。


小智 5

在安装 docker 并运行后,我还收到以下错误消息:docker run hello-world #Cannot connect to the Docker daemon at unix: /var/run/docker.sock。docker 守护进程是否正在运行?

这是一个解决方案,对我有用。环境

  • Windows 10(不要忘记在 Windows 上启用:设置>更新和安全>开发者模式)
  • Ubuntu 18.04 LTS
  • Docker 桌面版 2.3.0.2 (45183)
    • 在 Docker 桌面中启用:Expose daemon on tcp: // localhost: 2375 without TLS
    • Docker Desktop 也必须正在运行(连接到 Docker Hub ... 只需登录)

安装 ubuntu 后,更新存储库

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

通过 HTTPS 使用存储库

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
Run Code Online (Sandbox Code Playgroud)

添加官方 Docker GPG 密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Run Code Online (Sandbox Code Playgroud)

确保您现在拥有带指纹的钥匙

sudo apt-key fingerprint 0EBFCD88
Run Code Online (Sandbox Code Playgroud)

更新存储库

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

更新 docker 仓库

sudo add-apt-repository "deb [arch = amd64] https://download.docker.com/linux/ubuntu $ (lsb_release -cs) stable "
Run Code Online (Sandbox Code Playgroud)

再次更新存储库

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

在版本中安装 docker 的命令:5: 18.09.9 ~ 3-0 ~ ubuntu-bionic

sudo apt-get install docker-ce = 5: 18.09.9 ~ 3-0 ~ ubuntu-bionic docker-ce-cli = 5: 18.09.9 ~ 3-0 ~ ubuntu-bionic containerd.io
Run Code Online (Sandbox Code Playgroud)

设置 DOCKER_HOST 的命令

export DOCKER_HOST="tcp://0.0.0.0:2375"
Run Code Online (Sandbox Code Playgroud)

注意:将上面的命令放在您的配置文件中,以 ubunto ex 开头:echo "export DOCKER_HOST="tcp://0.0.0.0:2375"" >> ~/.bashrc

将用户添加到 docker 组

sudo usermod -aG docker $USER
Run Code Online (Sandbox Code Playgroud)

重启ubuntu

(关闭并再次打开 ubuntu 窗口)或运行:

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

测试安装(不要在docker命令之前使用更多的sudo(它会报错),用户“root”已经包含在docker组中)

docker run hello-world
Run Code Online (Sandbox Code Playgroud)

应显示以下消息

来自 Docker 的你好!此消息表明您的安装似乎工作正常。

注意:如果失败,请再次运行命令:

export DOCKER_HOST="tcp://0.0.0.0:2375"
Run Code Online (Sandbox Code Playgroud)

参考:https ://docs.docker.com/engine/install/ubuntu/ 会话:安装 DOCKER ENGINE

#其他版本的docker可以用ubuntu安装,使用下面的命令查看仓库:apt-cache madison docker-ce

然后安装所需版本的 docker:

sudo apt-get install docker-ce = <VERSION_STRING> docker-ce-cli = <VERSION_STRING> containerd.io
Run Code Online (Sandbox Code Playgroud)


GaT*_*mas 5

当我的终端启动后启动 docker 时,我遇到了这个问题。重新启动终端或托管终端的进程(例如 vscode)解决了该问题。


Ima*_*jid 5

在 WSL 中,运行dockerd可以解决问题。

$ sudo dockerd
Run Code Online (Sandbox Code Playgroud)


Abr*_*kes 5

有时,出于某种原因,Docker 会关闭我的 ubuntu 集成,我也会遇到同样的Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?错误。

进入窗口右上角的 docker 桌面设置齿轮 > 资源 > WSL 集成,然后重新打开集成:

在此输入图像描述