我在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守护进程总是以root用户运行,因此你需要在docker命令前加上sudo。

如果在使用docker命令时不想使用sudo,可以创建一个名为docker的Unix组并向其添加用户。当docker守护进程启动时,它使docker组可以读/写Unix套接字的所有权。

创建docker组并添加用户:

创建docker组。 $ sudo groupadd docker 将您的用户添加到docker组。 $ sudo usermod -aG docker $USER 登出并重新登录,以便重新评估组成员资格。 验证您可以在没有sudo的情况下使用docker命令。 $ docker run hello-world

这个命令下载一个测试映像,并在容器中运行它。当容器运行时,它打印一条信息消息并退出。

上面列出的步骤来自Docker官方文档。

其他回答

如果您使用的是Linux

试试sudo docker-compose up

我在Ubuntu 20.0.4中解决了这个问题

sudo chmod 666 /var/run/docker.sock

然后

sudo service docker start && docker-compose up -d

Ref.

当你得到一个错误:

错误:无法连接到Docker守护进程在http+ Docker://localhost - 它在运行吗?

解决方案是:

首先,尝试在远程/本地机器上验证Docker服务是否正常运行:sudo Service Docker status 如果不是,运行sudo service docker start或sudo systemctl start docker(取决于某些linux版本,请参阅docker get started指示)。 其次,启动docker作为sudo sudo docker-compose up

我也有同样的症状

唯一不同的是,它只发生在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和显示的误导性错误消息没有任何关系。

解决这个问题的简单方法: 问题:

解决方案:

sudo chown $USER /var/run/docker.sock

答: