我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。Docker-machine运行正常,可以通过Docker-machine ssh连接。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
dev * virtualbox Running tcp://192.168.99.100:2376
但是不能从docker-compose连接。
$ docker-compose up
无法在http+unix://var/run/ Docker连接到Docker守护进程。袜子——它在跑吗?
如果它位于非标准位置,则使用DOCKER_HOST环境变量指定URL。
我的Dockerfile和docker-compose。Yml在这里。
Dockerfile
FROM centos:centos7
DOCKER_HOST tcp://192.168.99.100:2376
docker-compose.yml
web:
build: .
为什么不能连接?什么好主意吗?
我也有同样的症状
唯一不同的是,它只发生在docker-compose构建期间
Docker ps工作正常。
在版本2中发生过。X和3.x。
重启docker服务,然后机器…
甚至重新安装docker + docker-compose。
我试过各种方法,但都没用。
最后,我尝试使用docker build“手动”构建Dockerfile。
显然,我在Docker上下文中的文件/文件夹上有一个权限问题。在开始构建时,它试图读取上下文,但失败了,并出现了正确的错误消息。
然而,这个错误消息没有传播到Docker -compose,这只是显示无法连接到Docker守护进程在http+unix://var/run/ Docker。袜子——它在跑吗?
发现解决方案是简单地将文件/文件夹添加到.dockerignore文件中,因为构建不需要它。另一种解决方法可能是嚼碎或chmod。
不管怎样,这可能会帮助人们遇到同样的问题,这与docker和显示的误导性错误消息没有任何关系。
有人查过日志吗?
在我的例子中,/var/log/upstart/docker.log中的错误信息是:
Listening for HTTP on unix (/var/run/docker.sock)
[graphdriver] using prior storage driver "aufs"
Running modprobe bridge nf_nat failed with message: , error: exit status 1
Error starting daemon: Error initializing network controller: Error creating default "bridge" network: can't find an address range for interface "docker0"
值得一提的是,我打开了vpn,所以:
$ sudo service openvpn stop
$ sudo service docker restart
$ docker-compose |start
$ sudo service openvpn start
这就是解决办法。