Portainer:尝试连接到 Docker 守护进程套接字时权限被拒绝

Mic*_*ung 6 docker portainer

我使用的是全新的 Fedora CoreOS,它附带了 Docker 版本 19.03.11。

我的core用户在docker组中:

[core@localhost ~]$ groups
core adm wheel sudo systemd-journal docker
Run Code Online (Sandbox Code Playgroud)

按照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
Run Code Online (Sandbox Code Playgroud)

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

尝试连接到 Docker 守护程序套接字时权限被拒绝

权限/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
Run Code Online (Sandbox Code Playgroud)

即使我也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
Run Code Online (Sandbox Code Playgroud)

到目前为止我发现的所有资源都建议将用户添加到组中docker(我这样做了),重新启动计算机(我这样做了),或者设置 666 on /var/run/docker.sock(我这样做了但不喜欢这样做)。没有任何帮助。

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

Von*_*onC 2

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

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

就像这样:

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock:z portainer/portainer
Run Code Online (Sandbox Code Playgroud)

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

那,或者使用dpw/selinux-dockersock