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

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


当前回答

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

ls -l /var/run/docker.sock

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

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

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

其他回答

也许这将帮助某些人,因为错误消息非常没有帮助,而且我已经多次执行所有标准许可步骤,但都无济于事。

Docker偶尔会在阻碍访问的地方留下幽灵环境变量,尽管您的系统在其他方面是正确设置的。下面的shell命令可以使它再次可访问,如果你已经让它运行了一点,它只是在重新启动后停止合作:

unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

I had a previously working docker install, and after rebooting my laptop it simply refused to work. Was correctly added to the docker user group, had the correct permissions on the socket, etc, but could still not run docker login, docker run ..., etc. This fixed it for me. Unfortunately I have to run this on each reboot. This is mentioned on a couple of github issues also as a workaround, although it seems like a bug that this is a persistent barrier to correct operation of Docker (note: I am on Arch Linux, not OSX, but this was the same issue for me).

需要将当前用户加入docker组,操作步骤如下:

sudo usermod -aG docker $(whoami)

然后登出并重新登录系统或重新启动系统。 根据docker版本进行测试

有关如何安装docker-engine的进一步信息,请参阅docker文档

OSX:

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

$(docker-machine env default)

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

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

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

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

由于docker在启动时绑定到一个由root拥有的unix套接字,因此使用'sudo'和docker命令一起工作。