我在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: .

为什么不能连接?什么好主意吗?


当前回答

尝试先运行dockerd或sudo dockerdif来启动daemon。如果你用sudo启动dockerd,你可能也想用sudo运行docker-compose up。否则也没关系。

工作解决方案https://github.com/docker/compose/issues/4181

其他回答

$sudo docker-compose up

我确实按照上面回答的步骤将$USER添加到组docker中。我不想添加一个新的组docker,因为在我的docker安装中,一个名为docker的组自动创建。

Docker CE已安装并运行。创建docker组,但未向其中添加用户。运行Docker命令需要使用sudo。继续执行Linux postinstall以允许非特权用户运行Docker命令并执行其他可选配置步骤。

但是使用docker-compose up也不起作用。它给出了相同的先前错误。 所以在我的情况下(Ubuntu 18.10) sudo docker-compose up解决了这个问题。

ps: @Tiw谢谢你的建议。

sudo dockerd在我的情况下启动了docker服务,我在windows中使用wsl2。

尝试先运行dockerd或sudo dockerdif来启动daemon。如果你用sudo启动dockerd,你可能也想用sudo运行docker-compose up。否则也没关系。

工作解决方案https://github.com/docker/compose/issues/4181

有人查过日志吗?

在我的例子中,/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 这就是解决办法。

Sudo systemctl start docker —启动Docker服务。

Sudo docker-compose在那之后。

我有Fedora 26,为了解决同样的问题,我最终进入了Fedora开发者页面上的Docker Compose,然后进入了Fedora开发者页面上的Docker,这对我很有帮助。

可能,社区认为docker服务应该从系统开始,一直在后台运行,但对我来说并不是那么明显,这就是为什么我能想到为什么没有这样一个流行的答案。

在Fedora开发者的页面上有如何启用Docker启动系统的说明:

Sudo systemctl启用docker