我在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 - Compose命令之前提供特权访问。

你可能需要杀死当前的Docker进程并重新启动Docker Desktop,然后它才最有可能工作。

P.S.我在MacOS上,在重新启动并提供对Docker Desktop(4.10.1版本)应用程序的根访问后,得到与上面相同的错误,我能够成功地运行Docker compose命令,如下所示。

Docker-compose up -d——build

其他回答

来自@srfrnk的回答适合我。

在我的情况下,我有下一个码头工人。yml文件:

  nginx:
    build:
      context: ./
      dockerfile: "./docker/nginx.staging/Dockerfile"
    depends_on:
      - scripts
    environment:
      NGINX_SERVER_NAME: "some.host"
      NGINX_STATIC_CONTENT_OPEN_FILE_CACHE: "off"
      NGINX_ERROR_LOG_LEVEL: debug
      NGINX_BACKEND_HOST: scripts
      NGINX_SERVER_ROOT: /var/www/html
    volumes:
      - ./docker-runtime/drupal/files:/var/www/html/sites/default/files:rw
    ports:
      - 80:80

./docker-运行时所有者和组-是root当其他文件所有者-我的用户。 当我尝试构建nginx时

Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

我添加了./docker-runtime到.dockerignore,它解决了我的问题。

默认情况下,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 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谢谢你的建议。

如果您使用的是Linux

试试sudo docker-compose up

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

解决方案:

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

答: