Docker无法连接到docker守护进程

在将我的Docker版本更新到0.8.0 ,inputsudo docker version出现错误消息:

 Client version: 0.8.0 Go version (client): go1.2 Git commit (client): cc3a8c8 2014/02/19 12:54:16 Can't connect to docker daemon. Is 'docker -d' running on this host? 

我按照说明进入命令sudo docker -d ,我得到这个:

 [/var/lib/docker|2462000b] +job initserver() [/var/lib/docker|2462000b.initserver()] Creating server open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory[/var/lib/docker|2462000b] -job initserver() = ERR (1) 2014/02/19 12:55:57 initserver: open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory 

我如何解决这个问题?

Linux的

创build一个Docker组文档揭示了以下步骤:

  1. 将用户添加到泊坞窗组。
     sudo usermod -aG docker $(whoami) 
  2. 注销并重新login以确保docker以正确的权限运行。
  3. 开始docker工人。
     sudo服务docker启动 

Mac OS X

正如Dayel Ostraco所说,有必要添加环境variables:

 docker-machine start # Start virtual machine for docker docker-machine env # It's helps to get environment variables eval "$(docker-machine env default)" # Set environment variables 

docker-machine start命令输出注释以指导过程。

如果你在OS X上运行Docker,运行下面的eval已经为我工作了。

 eval "$(docker-machine env default)" 

如果您不希望在每个terminal会话中都运行此eval语句,则可以将其添加到您的bash_profile

 #Docker eval "$(docker-machine env default)" 

请确保重新启动terminal会话或在bash_profile上运行源以使更改生效。

经过详细调查, Mac OS X重新启动后 (或者Docker虚拟机重新启动) 每次都会发生这个问题,阻止Docker客户端连接到Docker守护进程。

要解决这个问题,你可以:

A)使用官方安装程序( https://www.docker.com/products/docker-toolbox )重新安装Docker Toolbox,或者干脆

B)按顺序运行以下命令:

 # First make sure that the virtual machine is running docker-machine start default # Regenerate TLS connection certs, requires confirmation docker-machine regenerate-certs default # Finally, set env eval "$(docker-machine env default)" 

C)与(B)相同,您也可以复制并粘贴以下行来运行以下三个命令:

 docker-machine start default; docker-machine regenerate-certs default; eval "$(docker-machine env default)" 

万一你得到以下错误:

 Error getting SSH command: Something went wrong running an SSH command! command : cat /etc/os-release err : exit status 255 output : 

再次重新运行这三个命令,这应该是第二次。

Linux的

要在Linux上(从CLI )运行docker守护进程,请尝试运行:

 $ sudo service docker start 

或例子来初始化“基础”文件系统:

 $ sudo service docker stop $ sudo rm -rf /var/lib/docker $ sudo service docker start 

或手动,例如:

 $ sudo docker -d --storage-opt dm.basesize=20G 

要在Linux上安装机器二进制文件,请尝试:

  • 本地:

     install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) $HOME/bin/docker-machine 
  • 全球:

     sudo bash -c 'install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine' 

OS X

在OS X上, docker二进制文件只是一个客户端,你不能用它来运行docker守护进程,因为Docker守护进程使用特定于Linux的内核特性,所以你不能在OS X中本地运行Docker。所以你必须安装docker-machine为了创build虚拟机并附加到它。

通过以下方式检查您的docker-machine

 $ docker-machine --version docker-machine version 0.5.1 (HEAD) 

如果不是, 请通过以下方式安装机器

  • OS X

    • 通过Brew安装: brew install docker-machine
    • 手动:

       install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine 

请参阅: Docker – Mac OS X安装


那么你需要创builddefault机器(如果你没有):

 docker-machine create --driver virtualbox default 

或者检查是否已经存在:

 docker-machine ls 

设置Docker客户端的环境:

 eval "$(docker-machine env default)" 

然后通过列出容器仔细检查:

 docker ps 

请参阅: 开始使用Docker机器和本地VM

这通常发生在你不在docker组的时候。 您可以将自己添加到docker组中:

 sudo usermod -aG docker yourusername 

要么

 sudo usermod -aG docker $(whoami) 

之后,您需要注销并重新login到服务器。

或者,你可以sudo每个Docker命令。

如果以上所有其他解决scheme都不起作用,则可以尝试检查/var/run/docker.sock的所有权:

 ls -l /var/run/docker.sock 

如果您不是所有者,请使用以下命令更改所有权:

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

然后,您可以继续尝试执行无忧的Docker命令:D

找出Docker不工作的最好方法是手动运行守护进程。

 $ sudo service docker stop $ ps aux | grep docker # do this until you don't see /usr/bin/docker -d $ /usr/bin/docker -d 

Docker守护进程logging到STDOUT,所以它将开始吐出它所做的任何事情。

这是我的问题是:

 [8bf47e42.initserver()] Creating pidfile 2015/01/11 15:20:33 pid file found, ensure docker is not running or delete /var/run/docker.pid 

这是因为该实例已从另一个虚拟机克隆。 我只是不得不删除pidfile,事后工作。

当然,不要盲目地认为这会起作用,我build议再次手动运行守护进程,并在启动服务备份之前查看其他错误的日志输出。

如果您收到消息Can't connect to docker daemon. Is 'docker -d' running on this host? Can't connect to docker daemon. Is 'docker -d' running on this host? ,你可以通过docker version来检查它。

如果您看到像Docker Client正在运行的信息。 但是Docker Server不是 ,显然你需要启动Docker服务器。

在CentOS中,您可以使用service来启动或停止Docker服务器。

 $ sudo service docker stop $ sudo service docker start 

然后,在inputdocker version ,您将获得Docker Client和Docker Server的信息 ,并且Docker守护程序已启动。

安装后重启Docker:

 $ sudo service docker stop $ sudo service docker start 

它工作。

做一个ps aux | grep docker ps aux | grep docker来查看守护进程是否正在运行。 如果没有运行/etc/init.d/docker start

我有同样的错误,并试图docker-machine regenerate-certseval..没有为我工作。

这在OS X 10.11.3(El Capitan)和Docker v1.10.1上。 我只能通过删除和重新创builddocker-machine才能解决这个问题。 资源

如果运行docker-machine ls ,它会向您显示与下面类似的输出;

docker

未知

错误

无法查询docker版本:无法连接到docker引擎端点

尝试删除您的Docker机器;

 docker-machine rm -f default 

其中default是您的Docker计算机名称。 然后;

 docker-machine create -d virtualbox default 

创build一个新的Docker机器。

仔细检查一切看起来正常现在(没有错误或未知的docker)与:

 docker-machine ls 

最后,不要忘了在继续运行Docker Quickstart Terminal之前,先运行"$(docker-machine env default)"

我遇到了这个问题,我使用这些命令重新启动了Docker:

 $ sudo service docker stop $ sudo service docker start 

但是我没有解决我的问题,因为我忘了执行没有sudo Docker命令。 对于那些面临这个问题的人,试着去检查一下。

尝试

 $ sudo docker info 

而不是这个:

 $ docker info 

尝试添加当前用户到docker组:

 sudo usermod -aG docker $USER 

然后注销并login。

我遇到了同样的问题 – “无法连接到docker守护进程”。 (除了在尝试启动服务器时,我没有收到任何'文件未find'错误。)

'ps'显示“/ usr / bin / docker -d”仍在运行

我意识到,我从来没有真正成功地运行服务器,但我自己。 每一次尝试都产生了

 ... 2014/03/24 21:57:29 pid file found, ensure docker is not running or delete /var/run/docker.pid 

所以我迟迟没有意识到,安装docker的人可能已经注册了守护进程,这对我来说已经开始了。 因此,试图杀死守护进程以手动重启失败(操作不允许)。 所以我做了一个

 sudo kill -9 <PID> 

在守护进程上。 另一个守护进程立即取而代之,这个新的守护进程现在让我的CLI客户端连接:

 $ sudo docker info Containers: 0 Images: 0 Driver: aufs Root Dir: /var/lib/docker/aufs Dirs: 0 WARNING: No memory limit support WARNING: No swap limit support 

我有类似的问题。 我必须注销并重新login到shell,因为我刚刚安装了Docker,并且以下命令未显示在我的环境中。

 export DOCKER_HOST=127.0.0.1:4243 >> ~/.bashrc 

如果您使用Docker工具在OS X上运行,请按照此操作。

重新启动守护程序并configuration您的环境:

 docker-machine restart 

接着

 docker-machine env 

最后,

 eval $(docker-machine env) 

testing守护进程正在运行:

docker ps -adocker-machine ls 。 这将列出所有容器。

我刚刚在亚马逊AWS上遇到了同样的问题。

这是我所尝试的:

  • 使用已有的AWS实例在本地设置docker-machine
  • 使用通用设置
  • 它的连接types,但由于远程端口被closures,它失败了
  • 之后,Docker守护进程拒绝启动,但运行dockerd确实工作…

它在远程机器上进行了以下testing:

 service docker start # Also restart, no success systemctl start docker # Also restart, no success dockerd # Success 

我删除了/var/lib/docker并卸载了所有内容,但重新安装后没有成功。 不幸的是,我没有从失败中存储的日志,但docker.service只是拒绝启动。

但是,最终解决了我的问题基本上是:

 sudo usermod -aG docker $(whoami) 

在Docker的DOC站点之后: 作为非root用户pipe理Docker

1)创buildDocker组

 sudo groupadd docker 

2)使用户属于docker组来获得组的权限。

 sudo usermod -aG docker $USER 

检查是否为您的shell设置了DOCKER_HOST环境variables。

 env | grep DOCKER_HOST 

如果存在,

 unset DOCKER_HOST 

那么这应该工作:

 docker run hello-world 

我遇到了同样的问题。 在CentOS 6.5中:

 ps aux |grep `cat /var/run/docker.pid` 

如果显示没有Docker守护进程存在,那么我input:

 docker -d 

然后按Ctrl + D停止Docker。 因为我们使用-d选项,所以Docker将作为守护进程运行。 现在我们可以做到:

 service docker start 

然后,我可以做一个docker pull centos 。 就这样。

注:如果这些不起作用,你可以尝试yum update ,然后再重复这些,因为我在这之前yum install

检查你是否使用Docker机器:)

运行docker-machine env default应该做的伎俩。

因为根据文件:

Docker Machine是一个工具,可以让你在虚拟主机上安装Docker Engine,并用docker-machine命令pipe理主机。 您可以使用机器在您的本地Mac或Windows机箱,公司networking,数据中心或云提供商(如AWS或Digital Ocean)上创buildDocker主机。

使用docker-machine命令,您可以启动,检查,停止并重新启动托pipe主机,升级Docker客户端和守护进程,并configurationDocker客户端与您的主机通信。

将机器CLI指向正在运行的托pipe主机,并且可以直接在该主机上运行docker命令。 例如,运行docker-machine env default指向一个名为default的主机,按照屏幕上的说明完成env设置,并运行docker psdocker run hello-world等等。

https://docs.docker.com/machine/overview/

  1. 我也有同样的问题。 问题在于分配给docker-daemon和docker-client的套接字。
  2. 首先,没有为docker.sock上的docker-client设置权限您可以使用“sudo usermod -aG docker $ USER”
  3. 然后检查你的bash文件docker-client在哪里运行,对我来说是0.0.0.0:2375,而docker-daemon是在unix socket上运行的(在dockerd的configuration文件中设置的)。
  4. 只是评论bash线,它会正常工作。
  5. 但是如果你想让它在TCP端口而不是unix套接字上工作,可以修改dockerd的configuration文件,并将其设置为0.0.0.0.2375,并保持bash的状态(如果存在)或设置为0.0.0.0: 2375。

要修复,您需要在terminal中发出以下命令。 我会解释每一步:

 # Uninstall Docker from apt packages $ sudo apt-get remove docker docker.io # Remove it from the libraries just to be # sure it's gone forever $ sudo rm -rf /var/lib/docker/* 

现在,如果您想简化事情并获得更多时间,可以使用参数installDocker运行我的init脚本 :

 # Pull the init script from GitHub $ wget https://github.com/dminca/dotfiles/blob/master/init # Add rights to run the script $ chmod 755 init # Just run the script with the installDocker parameter $ ./init installDocker 

重启是可选的,但我build议你确保所有的顺利运行。

我在Ubuntu 14.04上运行Docker 1.10的时候遇到了同样的问题,而且没有一个给定的答案。 对我来说,修正是在运行Docker守护进程时指定存储驱动程序。

 sudo docker daemon --storage-driver=devicemapper 

如果重新生成TLS证书不起作用

 docker-machine regenerate-certs default 

尝试重新启动docker机器并设置envvariables:

 docker-machine restart default eval $(docker-machine env default) 

检查机器是否在运行:

 docker-machine ls 

或者可选地

 docker run hello-world 

这对我有效。 但是,如果您还没有守护进程, Docker的故障排除页面会详细介绍停止,删除和创build新机器的过程。

我也遇到了这个问题:“无法连接到Docker守护进程,docker守护进程是否在这个主机上运行?”。

我忘了使用sudo 。 希望它能帮助我们中的一些人。

 $:docker images Cannot connect to the Docker daemon. Is the docker daemon running on this host? $:sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE 

好,所以我今天开始有这个问题。 然后我看到很多回应,但似乎没有为我工作。 首先大部分的指令是指向linux的。 而对于Mac版本,他们都在谈论运行“docker机”。 我假设你使用docker机,如果你安装docker工具箱,因为然后docker将运行在Windows和Mac平台的虚拟机。 但是现在的2017和docker for mac是非常稳定的,因此不需要使用工具箱。

不知道守护进程如何停止。 但要重新启动它,我只需要“应用程序”,然后双击泊坞窗图标。 我被要求更新和重新启动,我接受。 之后,一切都像魅力一样。

尝试在/etc/sysconfig更改Dockerconfiguration文件, dockerdocker-network

(…〜v1.17)

docker文件:

 OPTIONS= -H fd:// 

或(v1.18):

docker-network文件:

 DOCKER_NETWORK_OPTIONS= -H unix:///var/run/docker.sock 

你有尝试关掉它吗? 🙂

在我的Mac上升级到Docker 1.10.1后,我遇到了同样的问题。 我做了以下几点:

在Docker快速入门terminal上

$ exit

$ exit

然后

docker机杀死默认

然后重新启动Docker快速入门terminal

这解决了我的问题。

Docker服务可能没有运行。

如果你在RedHat / Fedora / CentOS上,请试试这个:

sudo systemctl start docker

如果你在Ubuntu / Debian上:

sudo service start docker

Docker将开始在主机和相应的端口上运行。

我有一个类似的问题。

在我的情况下,解决scheme是删除不推荐使用的docker版本。 我认为这是造成一些冲突。

在Ubuntu上:

 sudo apt remove docker 

为我解决了这个问题