当我把Docker版本更新到0.8.0后,我在输入sudo 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
我怎么解决这个问题?
经过详细的调查,这个问题似乎每次在Mac OS X重新启动(或Docker虚拟机重新启动)后都会发生,这会阻止Docker客户端连接到Docker守护进程。
要解决这个问题,你可以:
A)使用官方安装程序(https://www.docker.com/products/docker-toolbox)重新安装Docker工具箱,或者简单地
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 :
只要再次重新运行这三个命令,第二次就可以工作了。
我有同样的错误,并尝试docker-machine regenerate-certs或eval..对我没用。
这适用于OS X 10.11.3 (El Capitan)和Docker v1.10.1。我只能通过删除和重新创建docker-machine来修复它。源
如果运行docker-machine ls,它会显示与下面类似的输出;
码头工人
未知的
错误
Unable to query docker version: Cannot
连接到docker引擎端点
试着移除Docker机器;
docker-machine rm -f default
其中默认是Docker机器名。然后;
docker-machine create -d virtualbox default
创建一个新的Docker机器。
再次检查现在一切看起来正常(没有错误或未知Docker):
docker-machine ls
最后,在你继续或运行Docker快速入门终端之前,不要忘记运行“$(Docker -machine env default)”。
要修复此问题,您需要在终端中发出以下命令。我将解释每一步:
# 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
重新启动是可选的,但我建议您这样做,以确保一切正常运行。
我也遇到了同样的问题——“无法连接到docker守护进程。”(除了我在试图启动服务器时没有得到任何“文件未找到”错误。)
“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可能已经注册了upstart守护进程,upstart已经为我启动了它。因此,试图杀死守护进程以手动重新启动它会失败(不允许操作)。所以我做了一个
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
我在亚马逊AWS上运行时也遇到了同样的问题。
以下是我的尝试:
使用已经存在的AWS实例在本地设置docker-machine
使用的通用设置
它算是连接上了,但因为远程端口关闭了,所以失败了
在那之后,Docker守护进程拒绝启动,但是运行dockerd可以工作…
在远程机器上进行了如下测试:
service docker start # Also restart, no success
systemctl start docker # Also restart, no success
dockerd # Success
我删除了/var/lib/docker并卸载了所有内容,但重新安装后没有成功。不幸的是,我没有日志存储从失败,但docker。服务拒绝启动。
然而,最终解决我问题的基本上是:
sudo usermod -aG docker $(whoami)