Docker:无法连接到http + docker:// localunixsocket的docker守护进程 - 它正在运行吗?

时间:2017-06-28 10:54:16

标签: docker docker-compose

我有一种奇怪的情况。我倾向于执行命令docker-compose -f dev.yml up --build以使容器运行起来。这里,dev.ymldocker-compose.yml的开发版本。直到今天早上,每件事情都工作正常,突然之间,我开始收到有关无法连接到docker-daemon的错误。

现在,只有在命令中包含--build时才会出现此问题。如果我只执行docker-compose -f dev.yml up它就可以了。如果我在命令中包含--build并使用sudo执行它,则可以再次正常工作。

已验证的事情:

  • 执行命令的用户被添加到具有的docker组 /var/run/docker.sock
  • 的权限

dev.yml的详细信息

version: '2'

volumes:
  postgres_data_dev: {}
  postgres_backup_dev: {}

services:
  postgres:
    build: ./compose/postgres
    volumes:
      - postgres_data_dev:/var/lib/postgresql/data
      - postgres_backup_dev:/backups
    environment:
      - POSTGRES_USER=rocky


  django:
    build:
      context: .
      dockerfile: ./compose/django/development/Dockerfile
    depends_on:
      - postgres
    environment:
      - POSTGRES_USER=rocky
      - USE_DOCKER=yes
    volumes:
      - .:/app
      - /tmp/
    links:
      - postgres
      - redis
    expose:
      - "8000"
    env_file:
      - ./dev.env


  nginx:
    build: 
      context: .
      dockerfile: ./compose/nginx/development/Dockerfile
    depends_on:
      - django
    ports:
      - "0.0.0.0:80:80"
    links:
      - django
    volumes_from:
      - django


  redis:
    image: redis:latest
    hostname: redis


  celeryworker:
    build:
      context: .
      dockerfile: ./compose/django/development/Dockerfile
    env_file: ./dev.env
    depends_on:
      - django
      - redis
      - postgres
    volumes_from:
      - django
    command: celery -A rocky.taskapp worker -l INFO
    restart: on-failure


  celerybeat:
    build:
      context: .
      dockerfile: ./compose/django/development/Dockerfile
    env_file: ./dev.env
    depends_on:
      - django
      - redis
      - postgres
      - celeryworker
    volumes_from:
      - django
    command: celery -A rocky.taskapp beat -l INFO

更新 我的同事遇到了同样的问题。我对celerybeat,celeryworker的配置表示怀疑。有人可以验证吗?感谢。

8 个答案:

答案 0 :(得分:13)

对我来说,以下命令有效,

sudo chown $USER:$USER -R .

检查我在github上的对话,Issue

答案 1 :(得分:5)

我刚刚在sudo之前加入了docker-compose,并且确实如此。

答案 2 :(得分:4)

这最像是一个权限问题,而docker-compose完全给出了错误的错误。

尝试使用docker代替docker-compose手动构建图片,例如 docker build -f=./compose/django/development/Dockerfile .  你很可能会看到真正的问题。

答案 3 :(得分:4)

在Ubuntu上全新安装dockerdocker-compose后尝试运行docker-compose up,我遇到了此问题。我设法通过将我的用户添加到docker组来解决问题as described here

sudo usermod -aG docker ${USER}

并退出并重新登录。

您可以通过运行

来避免退出as described here
su - $USER

答案 4 :(得分:1)

$ sudo service docker start$ sudo systemctl docker start如果它以某种方式停止,它将再次开始运行docker守护程序,并且不要忘记将用户添加到docker组sudo usermod -aG docker $(whoami)

答案 5 :(得分:1)

它愚蠢,但在我的情况下,在docker-compose.yml中,我保留了图像的大写名称,并遇到了该错误。我检查了泊坞窗日志,最后将该名称固定为小写。

答案 6 :(得分:0)

重启docker服务为我解决了这个问题。

$ systemctl restart docker.service

答案 7 :(得分:0)

因此也许使用sudo运行可以解决您的问题,但您应确保用户可以使用当前特权访问Docker引擎,而无需sudo。解决方法是如此简单。

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker