我想转移到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?

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


当前回答

OSX:

在打开docker并通过快速终端(https://docs.docker.com/engine/installation/mac/)启动“默认”机器后,您尝试docker命令,并得到这个“无法连接到docker守护进程”消息,原来您需要设置一些env变量:

$(docker-machine env default)

然后用docker run hello-world试试,看看是否一切正常。

其他回答

我在运行docker时也有同样的问题。

可以使用sudo用户执行命令:

sudo docker ***your command here***

我也有同样的问题,对我有效的方法是: 检查/var/run/docker.sock的所有权

ls -l /var/run/docker.sock

如果您不是所有者,则使用命令更改所有者

sudo chown *your-username* /var/run/docker.sock

然后,您可以继续尝试轻松地执行docker命令:D

Ubuntu的: 我更新docker的时候就发生了。 您需要取消服务和套接字的掩码,然后重新启动服务。 以下是对我有用的:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

幕后发生了什么 Systemd还能够通过将一个单元链接到/dev/null,自动或手动地将其标记为完全不可启动这称为屏蔽单元,可以使用mask命令实现。

sudo systemctl mask docker.service

你可以使用以下方法查看屏蔽服务的列表:

sudo systemctl list-unit-files

要启用自动/手动启动服务,您需要使用:

sudo sytemctl unmask docker.service

现在该服务将被启用,如下所示

将用户添加到docker组

如果docker组不存在,添加它: Sudo groupadd docker 将连接用户${user}加入docker组: sudo gpasswd -a ${USER} docker 重启Docker守护进程: Sudo服务docker重启 要么执行newgrp docker,要么注销/登录以激活对 组。

我也有同样的问题。为了解决这个问题我已经挣扎了两天了。

只有当我这样做的时候,它才起作用:

根据Docker的教程,你需要添加Docker密钥,如果还没有添加,使用: $ sudo wget - qo - https://get.docker.com/gpg | sudo apt-key add - 然后确保你为自己授予docker特权,使用: $ sudo usermod -aG docker $USER

希望这也能帮助到你。