docker:无法连接到docker守护进程在http + docker:// localunixsocket – 它运行?

我有一个奇怪的场景。 我倾向于执行命令docker-compose -f dev.yml up --build来获取容器并工作。 在这里, dev.ymldocker-compose.yml开发版本。 直到今天早上,所有的东西都运行正常,而且突然之间,我开始出现无法连接到docker-daemon的错误。

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

事情validation:

  • 执行该命令的用户被添加到具有/var/run/docker.sock权限的/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的configuration有疑问。 任何人都可以请validation? 谢谢。

对于我来说,下面的命令工作,

 sudo chown $USER:$USER -R . 

检查我在github上的这个对话

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

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

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