运行 docker-compose up 时“拨打 unix /tmp/docker.sock: connect: 权限被拒绝”

0 fedora docker docker-compose

我刚在工作中换了一台新电脑,我不明白为什么会出现这个问题。我已经搜索了很多 SO 线程和其他网站,但还没有解决这个问题。

我的操作系统是 Fedora 29。而且我对 docker 很菜鸟,所以我真的迷失在这一切中。

所以基本上每次我运行时docker-compose up,我都会收到此错误:

nginx-proxy        | dockergen.1 | 2019/10/15 08:23:40 Error retrieving docker server version info: Get http://unix.sock/version: dial unix /tmp/docker.sock: connect: permission denied
nginx-proxy        | dockergen.1 | 2019/10/15 08:23:40 Error retrieving docker server info: Get http://unix.sock/info: dial unix /tmp/docker.sock: connect: permission denied
nginx-proxy        | dockergen.1 | 2019/10/15 08:23:40 Error listing containers: Get http://unix.sock/containers/json?all=1: dial unix /tmp/docker.sock: connect: permission denied
nginx-proxy        | dockergen.1 | 2019/10/15 08:23:40 Watching docker events
nginx-proxy        | dockergen.1 | 2019/10/15 08:23:40 Error retrieving docker server info: Get http://unix.sock/info: dial unix /tmp/docker.sock: connect: permission denied
nginx-proxy        | dockergen.1 | 2019/10/15 08:23:41 Docker daemon connection interrupted
Run Code Online (Sandbox Code Playgroud)

码头工人组

我看到很多人建议创建docker组并在其中添加当前用户,但它对我不起作用,即使在再次登录并重新启动后也是如此。

$ ls -l /var/run/docker.sock
srw-rw----. 1 root docker 0 Oct 15 09:58 /var/run/docker.sock
$ whoami
ave
$ groups ave
ave : ave wheel dialout docker
Run Code Online (Sandbox Code Playgroud)

我也尝试过sudo setfacl -m user:ave:rw /var/run/docker.sock,也没有用。

泊坞窗

我尝试卸载 docker 并重新安装它,停止 docker 守护进程并重新启动它,docker-compose down并且docker-compose up.

无论我运行时docker-compose up有或没有sudo,都会发生同样的错误。

docker-compose.yml

我的docker-compose.yml文件大约有 200 行长,所以这是我认为与这个问题相关的部分?告诉我是否需要更多。

services:
  nginx-proxy:
   build:
    context: .
    dockerfile: Dockerfile-nginx
   container_name: nginx-proxy
   ports:
    - "80:80"
   environment:
    - DEFAULT_HOST=<a host name>
   volumes:
    - /var/run/docker.sock:/tmp/docker.sock:ro
   depends_on:
    - web
    - gateway
    - processing
Run Code Online (Sandbox Code Playgroud)

Adi*_*iii 5

你需要添加

privileged: true
Run Code Online (Sandbox Code Playgroud)

这个已经合并了。要在容器上启用,请使用:

my_service:
 privileged: true
Run Code Online (Sandbox Code Playgroud)

你可以检查一下这个问题