我想转移到Docker,所以我刚刚开始摆弄它。我已经在VirtualBox Ubuntu 15.10 (Wily Werewolf)安装上安装了Docker,然后按照这里的建议,我尝试运行一个基本的nginx Docker镜像:

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

所以我检查了Docker是否在运行:

$ sudo service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since vr 2015-11-06 08:41:48 CET; 15min ago
     Docs: https://docs.docker.com
 Main PID: 7542 (docker)
   CGroup: /system.slice/docker.service
           └─7542 /usr/bin/docker daemon -H fd://

nov 06 08:41:47 kramer65-VirtualBox systemd[1]: Starting Docker Application Container Engine...
nov 06 08:41:47 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:47.900410966+01:00" level=info msg="API ...ock"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.033514149+01:00" level=info msg="Fire...lse"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.141594321+01:00" level=info msg="Defa...ess"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.416294436+01:00" level=warning msg="Y...it."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.565507576+01:00" level=info msg="Load...rt."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567907022+01:00" level=info msg="Load...ne."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567945214+01:00" level=info msg="Daem...ion"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567969891+01:00" level=info msg="Dock....9.0
nov 06 08:41:48 kramer65-VirtualBox systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

这表明Docker守护进程实际上已经在运行,但为了确保我只是手动启动了Docker守护进程:

$ sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock           
INFO[0000] [graphdriver] using prior storage driver "aufs" 
INFO[0000] Firewalld running: false                     
INFO[0000] Default bridge (docker0) is assigned with an IP address XXX.XX.X.X/XX. Daemon option --bip can be used to set a preferred IP address 
WARN[0000] Your kernel does not support swap memory limit. 
INFO[0000] Loading containers: start.                   

INFO[0000] Loading containers: done.                    
INFO[0000] Daemon has completed initialization          
INFO[0000] Docker daemon                                 commit=76d6bc9 execdriver=native-0.2 graphdriver=aufs version=1.9.0

然后我尝试再次运行图像,但结果相同:

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

我试着执行命令,但没有效果。我哪里做错了?


当前回答

我在亚马逊EC2实例上也遇到过同样的错误。该问题在重新启动实例后得到修复。

其他回答

在Ubuntu上安装docker后,我运行了以下命令:

sudo service docker start

你试过吗?

对于那些已经尝试重新启动您的机器的人,按照docker env文档中的说明取消设置环境变量DOCKER_HOST,其余的都只是尝试使用

sudo service docker restart

即使在重新启动机器后,也只有这一招管用。

通常,下面的命令可以达到目的:

sudo service docker restart

这,而不是docker启动的情况下,docker似乎已经在运行。

如果这是可行的,那么在另一个答案和这个GitHub问题中,如果你还没有将自己添加到docker组中,请运行:

sudo usermod -aG docker <your-username> 

你很可能已经准备好了。


至于其他人遇到这个问题,在某些操作系统的docker在你安装后没有立即启动,因此,同样的不能连接到守护进程消息出现。在这种情况下,您可以首先通过执行以下命令检查Docker服务的状态来验证Docker确实没有运行:

sudo service docker status

如果输出看起来像:docker stop/waiting,而不是docker start/running, process 15378,那么它显然意味着docker不是活动的。在这种情况下,确保你的开头是:

sudo service docker start

和之前一样,你很有可能就可以出发了。

针对Ubuntu 16.04

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

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

:

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

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

DOCKER_OPTS=

:

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

然后重启你的电脑。

我可以通过运行以下命令来修复这个问题:

sudo mv /var/lib/dpkg/info/docker-ce* /tmp