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

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


当前回答

我的设置有两个情况下这个错误:

我在容器内运行集成测试后,根用户创建的__pycache__文件对docker(告诉你原始问题)和docker-compose(告诉你关于docker主机含糊不清)是不可访问的; microk8s阻塞了我的端口,直到我停止它。

其他回答

默认情况下,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官方文档。

我知道这很傻,但在我的情况下,我只是尝试了sudo,它就像一个魅力。

在您的情况下,只需尝试:$ sudo docker-compose up

以下是对我有用的,我不确定是哪一部分起作用了:

julian:project$ sudo service docker status
julian:varys$ sudo service docker status                                                                                                                                                                                
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-07-15 01:21:16 UTC; 24min ago
     Docs: https://docs.docker.com
 Main PID: 6762 (dockerd)
    Tasks: 25
   CGroup: /system.slice/docker.service
           └─6762 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

julian:project$ export DOCKER_HOST=unix:///run/containerd/containerd.sock

julian:project$ sudo groupadd docker
groupadd: group 'docker' already exists
julian:project$ sudo gpasswd -a $USER docker
Adding user ubuntu to group docker
julian:project$ newgrp docker

julian:project$ ls -ln /var/run/ | grep docker
drwx------  5   0   0  120 Jul 15 01:10 docker
-rw-r--r--  1   0   0    4 Jul 15 01:10 docker.pid
srw-rw----  1   0 999    0 Jul 15 01:10 docker.sock

julian:project$ sudo rm /var/run/docker.sock                                                                                                                                                                                            
julian:project$ sudo rm /var/run/docker.pid

julian:project$ sudo service docker restart  

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

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

除了将用户添加到docker组中,为了避免重复输入sudo,您还可以为docker命令创建一个别名,如下所示:

alias docker-compose="sudo docker-compose"
alias docker="sudo docker"