我正在一个最受信任的网络中管理多个运行 Ubuntu 18.04(带有 systemd)和 Docker 的计算主机。
我有一个身份验证服务器,因此我没有手动将用户添加到 docker 组,以便他们可以运行 docker 命令,而是在身份验证服务器上创建了一个组 ldap-docker 并将我的用户添加到其中。然后我将 "group": "ldap-docker" 添加到 /etc/docker/daemon.json 文件中,并从系统中删除了本地 "docker" 组。
这在几个主机上都可以正常工作,但在其中一些主机上 docker.service 不会启动,因为 /var/run/docker.sock 仍然由 root:root 拥有,而不是 root:ldap-docker。docker.socket.service 也报告启动失败
$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied
$ sudo systemctl status docker.socket
● docker.socket - Docker Socket for the API
Loaded: loaded (/lib/systemd/system/docker.socket; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2021-03-12 08:11:48 PST; 8h ago
Listen: /var/run/docker.sock (Stream)
Mar 12 08:11:48 host.example.com systemd[1]: Starting Docker Socket for the API.
Mar 12 08:11:48 host.example.com systemd[1171]: docker.socket: Failed to resolve group docker: Connection refused
Mar 12 08:11:48 host.example.com systemd[1]: docker.socket: Control process exited, code=exited status=216
Mar 12 08:11:48 host.example.com systemd[1]: docker.socket: Failed with result 'exit-code'.
Mar 12 08:11:48 host.example.com systemd[1]: Failed to listen on Docker Socket for the API.
我可以在 /var/run/docker.sock 套接字上运行 sudo chgrp,但是 docker 服务已经无法启动,所以这无济于事。
如何控制 docker.sock.service 的启动?为什么我的设置在某些机器上可以正常工作,而在其他机器上不行?