【问题标题】:Portainer: Got permission denied while trying to connect to the Docker daemon socketPortainer:在尝试连接到 Docker 守护程序套接字时获得权限被拒绝
【发布时间】:2020-08-02 10:44:57
【问题描述】:

我正在使用 Docker 版本 19.03.11 附带的全新 Fedora CoreOS。

我的core 用户在docker 组中:

[core@localhost ~]$ groups
core adm wheel sudo systemd-journal docker

按照deployment instructions for portainer,我创建一个像这样的新Portainer 容器(如coreroot,甚至都没有关系):

$ docker volume create portainer_data
$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

当我尝试连接到本地守护进程时:

/var/run/docker.sock的权限:

[core@localhost ~]$ ll /var/run/docker.sock
srw-rw----. 1 root docker 0 Aug  2 10:02 /var/run/docker.sock

即使我chmod o+rw /var/run/docker.sock 它也不起作用。这表明问题可能出在容器本身,所以我尝试访问它但我不能:

[core@localhost ~]$ docker exec -it portainer sh
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"sh\": executable file not found in $PATH": unknown

到目前为止,我发现的所有资源都建议将用户添加到 docker 组,我这样做了,重启了机器,我这样做了,或者在 /var/run/docker.sock 上设置了 666,我这样做了但不想这样做。没有任何帮助。

知道出了什么问题以及如何解决吗?

【问题讨论】:

    标签: docker portainer


    【解决方案1】:

    如果是 SELinux 问题,请先尝试关注portainer/portainer issue 849

    正确的方法是将 :z 添加到卷映射中,这样就不会破坏 docker 的目的。

    像这样:

    docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock:z portainer/portainer
    

    我们还需要一种在 Portainer 中为新容器添加 z 或 Z 标志的方法。这是自 1.7 以来的一个功能,例如2015 年在 Docker 中。

    那个,或者使用dpw/selinux-dockersock

    【讨论】:

      【解决方案2】:

      感谢 Portainer Discord 上的 MrPaperbag,我发现这是因为 SELinux 的限制。

      在这里找到解决方案:https://nanxiao.me/en/selinux-cause-permission-denied-issue-in-using-docker/

      使用--privileged 运行docker run,或者使用setenforce 0 将SELinux 模式设置为允许。可能有一种方法可以正确配置 SELinux,而不仅仅是绕过它,但是,对于我的用例来说,这已经足够了。

      【讨论】:

        【解决方案3】:

        命令中一切正常。我进行了复制,并且使用此配置可​​以正常工作:

        ls -la /var/run/ | grep docker
        drwx------  8 root                root                 180 Aug  1 14:40 docker
        -rw-r--r--  1 root                root                   4 Aug  1 14:29 docker.pid
        srw-rw----  1 root                docker                 0 Aug  1 14:29 docker.sock
        
        getenforce 
        Permissive
        

        如果这些不能解决问题,我会尝试卸载预安装的 docker。你可能永远不知道他们使用了哪些阴暗的设置。

        【讨论】:

          猜你喜欢
          • 2019-06-28
          • 1970-01-01
          • 1970-01-01
          • 2018-05-30
          • 1970-01-01
          • 2018-01-29
          • 2020-12-28
          • 1970-01-01
          • 2019-04-07
          相关资源
          最近更新 更多