我有一种奇怪的情况。我倾向于执行命令docker-compose -f dev.yml up --build
以使容器运行起来。这里,dev.yml
是docker-compose.yml
的开发版本。直到今天早上,每件事情都工作正常,突然之间,我开始收到有关无法连接到docker-daemon的错误。
现在,只有在命令中包含--build
时才会出现此问题。如果我只执行docker-compose -f dev.yml up
它就可以了。如果我在命令中包含--build
并使用sudo
执行它,则可以再次正常工作。
已验证的事情:
/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的配置表示怀疑。有人可以验证吗?感谢。
答案 0 :(得分:13)
答案 1 :(得分:5)
我刚刚在sudo
之前加入了docker-compose
,并且确实如此。
答案 2 :(得分:4)
这最像是一个权限问题,而docker-compose完全给出了错误的错误。
尝试使用docker
代替docker-compose
手动构建图片,例如
docker build -f=./compose/django/development/Dockerfile .
你很可能会看到真正的问题。
答案 3 :(得分:4)
在Ubuntu上全新安装docker
和docker-compose
后尝试运行docker-compose up
,我遇到了此问题。我设法通过将我的用户添加到docker
组来解决问题as described here:
sudo usermod -aG docker ${USER}
并退出并重新登录。
您可以通过运行
来避免退出as described heresu - $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