我已经应用了互联网上所有可用的解决方案,但我仍然不能运行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的时候。

来解决

service docker stop
cd /var/run/docker/libcontainerd
rm -rf containerd/*
rm -f docker-containerd.pid
service docker start

然后“docker run....”下载映像并像往常一样启动容器


首先,尝试使用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。


你可以试试这个:

systemctl start docker

这对我来说很有效。

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

gpasswd -a $USER docker

如果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

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

rm /var/snap/docker/<your-version-number>/run/docker.pid
snap stop docker
snap start docker

请确保将‍‍‍‍<your-version-number>‍替换为适当的版本号。


对于gitlab CI运行node:lts image,我也遇到了同样的问题:

我只是重新启动docker守护进程和重新启动容器,它为我工作。


这对我来说是可行的,如果你使用Ubuntu 16或18(14也可以),它可能只适用于你。试一试很容易:

打开Ubuntu软件,输入Docker。 卸载docker (108 mb),如果它是预安装的。 安装码头工人 现在运行这些命令,看看是否会出现同样的错误

错误:

完成以上步骤后。

正如你所看到的,它起作用了:)


你就跑

sudo dockerd

Dockerd是docker容器的守护服务,因为它不是在后台运行,我们不能采取任何与服务相关的操作,需要重新启动。


在ubuntu中使用这个 出口DOCKER_HOST = tcp: / / localhost: 2375


下面是我在Linux上使用的解决方案

Systemctl start docker。


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


对我来说,解决方案就是确保我安装了正确的Docker包。例如,对于Ubuntu,贬值包是:

码头工人 docker-engine docker.io containerd runc

安装检查https://docs.docker.com。在撰写本文时,提供了Ubuntu、CentOS、Debian和Fedora的使用说明。


我在Linux上使用yum (yum install docker)安装docker时也遇到了同样的问题。

解决方法:从官方网站下载docker二进制文件:docker安装、解包和安装步骤。


当消息出现时,我试图在AWS的一个实例中运行docker(刚刚安装)。 我只是写sudo服务docker启动和工作为我很好。

请参阅AWS与Docker


确保/etc/docker/daemon.json路径下的信息

{
  "registry-mirror": [
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "192.168.199.100:5000"
  ]
}

删除

"insecure-registries": [
    "192.168.199.100:5000"
]

运行良好 在这里输入图像描述


我在root上运行并尝试如下,它起作用了:

service docker start

export DOCKER_HOST="tcp://0.0.0.0:2375"

这个问题可以通过运行来永久解决 1. Systemctl启用docker 2. 服务码头启动


我在拉集装箱时关闭docker后遇到了这个问题:

docker pull mongo

起初,我得到奇怪的错误,所以我清除docker:

sudo 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

在这之后,我可以拉mongo和运行“hello world”。


我只是简单地忘记了在我的mac上运行Docker桌面,在运行Docker桌面之后,你就会很好了。


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


这个异常发生在docker服务没有运行或者登录用户没有权限访问docker的情况下,通常在RedHat中出现

使用下面的命令可以解决这个问题

Sudo服务docker启动


目前没有一个答案适用于我的这个错误版本。我使用的是Ubuntu 18的桌面版。下面两个命令解决了这个问题。

Sudo snap connect docker:home:home

Sudo snap start docker


使用 Docker start <your_container_name>

然后使用连接数据库 mssql -u <你的用户名> -p <你的密码>

如果在第一步中出现错误,那么docker将运行并执行第二步。

注意:我使用Mac作为我的主要操作系统,这对于基于Unix的操作系统可能是相同的答案。如果不是!提前说声抱歉。


我刚刚从主文档中重新安装了DOCKER。 我遇到的问题是,在安装之后,服务立即停止运行。

这些命令将帮助您确保docker已经启动并运行,以便您的run命令可以找到它:

$ sudo service --status-all 
$ sudo service docker start
$ sudo service docker start

我还收到了下面的错误消息,在安装docker并运行:docker run hello-world unix: /var/run/docker.sock无法连接到Docker守护进程。docker守护进程正在运行吗?

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

Windows 10(别忘了在Windows上启用:设置>更新和安全>开发人员模式) Ubuntu 18.04 LTS Docker Desktop版本2.3.0.2 (45183) 在Docker Desktop中启用:在tcp: // localhost: 2375上不带TLS暴露守护进程 Docker Desktop也必须正在运行(连接到Docker Hub…登录即可)

安装ubuntu后,更新存储库

sudo apt-get update

通过HTTPS使用存储库

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

添加Docker官方GPG密钥:

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

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

sudo apt-key fingerprint 0EBFCD88

更新存储库

sudo apt-get update

更新docker存储库

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

再次更新存储库

sudo apt-get update

命令:5:18.09.9 ~ 3-0 ~ ubuntu-bionic安装docker

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

命令设置DOCKER_HOST . conf

export DOCKER_HOST="tcp://0.0.0.0:2375"

注意:把上面的命令放在你的配置文件中,从ubunto开始 例:echo "出口DOCKER_HOST = " tcp: / / 0.0.0.0:2375 " > > ~ / . bashrc

将用户添加到docker组

sudo usermod -aG docker $USER

重新启动ubuntu

(关闭并重新打开ubuntu窗口) 或运行:

source ~/.bashrc

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

docker run hello-world

应该会显示下面的消息

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

注意:如果失败,请重新执行命令:

export DOCKER_HOST="tcp://0.0.0.0:2375"

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

其他版本的docker可以安装在ubuntu中,请使用下面的命令查看存储库: Apt-cache Madison docker-ce

然后安装所需版本的docker:

sudo apt-get install docker-ce = <VERSION_STRING> docker-ce-cli = <VERSION_STRING> containerd.io

对于所有在安装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 systemctl unmask docker
sudo systemctl start docker

在root模式下,执行systemctl start docker命令

然后,可以运行systemctl status docker命令查看状态


我从snap存储库安装docker。所以我也不得不从snap(运行Ubuntu)开始。

Sudo snap start docker

否则,您也可以从它们的存储库中安装它。


我想如果你正在使用带有GUI的WSL,那么你可以尝试一下

sudo /etc/init.d/docker start

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


这对我来说很好…!

service docker restart

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

sudo su
systemctl start docker
systemctl enable docker
systemctl restart docker

or

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

我也有同样的问题。在我的案例中,VPN是罪魁祸首。关闭VPN有助于成功安装。


我在终端启动后启动docker时遇到了这个问题。重新启动终端或承载终端的进程(如vscode)解决了这个问题。


只是增加了知识储备。我觉得这个视频很有用。我没有定义DOCKER_HOST。我有一个/etc/wsl.conf,它有:

[automount]
root = /
options = "metadata"

重启几次后,docker hello-world工作了。


这对你来说可能有点晚了,但希望它能帮助别人在码头工人的丛林中找到自己的路。 该问题可能来自tcp端口绑定问题 验证该文件是否存在

/etc/systemd/system/docker.service.d

这是默认的UNIX套接字监听覆盖文件。该文件实际上可能是空的,但我发现它存在的事实有时会导致一些头痛,就像你所面临的。 如果存在1.单击“确定”。然后2。如果不是,直接转到2。

1. $ sudo rm -rf /etc/systemd/system/docker.service.d

2. $ sudo systemctl deamon-reload

我发现这里的一些建议忽略了实际守护进程无法加载的错误

和docker一起玩的好朋友是

$ systemctl status docker.service

对于那些刚安装并试图在RaspberryPi (RPi)上运行docker的人,我需要重新启动我的RPi 4B+来解决这个问题,并实际运行docker守护进程。

在写这篇文章的时候,这本伟大的手册确实提到了重启RPi的必要性,但只有在设置“非根用户到Docker组”之后。

HTH,如果有人像我一样想念这个…


如果您正在尝试在windows下安装带有wsl 2 linux子系统的docker,请阅读本文档并检查是否执行了此命令:

wsl.exe --set-version (distro name) 2

并检查您的Windows操作系统docker->设置->资源->启用与其他发行版的集成:被检查并重新启动。


它发生在docker还没有启动的时候。

请检查docker状态

$ sudo systemctl status docker

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

$ sudo systemctl start docker && sudo systemctl enable docker && sudo systemctl status docker

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

$ sudo docker run hello-world

我没看到有人提到这个解决方案,所以我把它贴出来,说不定能帮到别人。我在MacOS机器上遇到了这个错误。原因是我在dotfiles中设置了DOCKER_HOST环境变量。通过unset DOCKER_HOST来取消它就可以了。我在Mac文档的官方docker中找到了这个技巧:https://docs.docker.com/desktop/mac/troubleshoot/#workarounds-for-common-problems。


如果你使用MAC,那么在finder中输入docker,它会自动解析。


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

sudo service docker start

然后检查状态

sudo service docker status

显示

* Docker is running

但是尝试任何docker命令,例如

docker images

显示相同的错误

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

运行下面的程序可以解决这个问题

sudo service docker restart

重启解决了这个问题,而启动没有


对于Linux运行

sudo dockerd

但是,如果你在mac上使用Docker客户端,它就不起作用了。试试下面的代码

$socat TCP-LISTEN:2376,reuseaddr,fork

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

这个解决方案向世界开放了2376端口……由于TLS未启用,这是一个坏主意,因为同一网络上的任何人都可以劫持您的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在我的系统上安装了两次,一次是通过snap,另一次是通过便利脚本。所以,如果有人遇到这个问题,一定要检查docker没有安装在多个地方,因为这会导致一些非常奇怪的行为。


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

docker context ls 
docker context use default 

在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:~$


这在我的情况下是有效的:

sudo service docker start

当我没有登录到Docker时,我收到了这个错误消息。在进行更高级的故障排除之前,请确保您已登录到Docker。在mac上,打开Docker桌面应用程序并登录。这为我修正了错误。


码头工人。sock作为docker CLI和docker守护进程之间的通信通道。您可以使用这个命令简单地运行您的容器。

docker run -v /var/run/docker.sock:/var/run/docker.sock  <ImageName>:latest

对我来说,docker真的没有运行,缺少以下命令来启动它:

systemctl --user start docker-desktop

对我来说,错误的原因是我强迫退出的docker桌面。 所以重新启动docker桌面为我工作,错误得到解决。


在Windows 11和ubuntu 22上执行命令wsl.exe——update .exe 在powershell帮助我通过容器运行docker,因为它是在Windows 10上

在此之前,我得到无法连接到Docker守护进程在unix:/var/run/ Docker .sock。docker守护进程正在运行,这在我的windows 10 ubuntu 20.04上没有发生,设置相同。

从普通的sudo服务docker启动


在我的情况下,当做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


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