Docker

如何更改 docker.socket 組

  • March 23, 2021

我正在一個最受信任的網路中管理多個執行 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 的啟動?為什麼我的設置在某些機器上可以正常工作,而在其他機器上不行?

好的,所以問題有兩個。一個是您(可能)必須使用 –group 更改 dockerd 組,並且您還必須更改 docker.socket.service 組。

另一部分是您需要使用 systemd 覆蓋(sudo systemctl edit docker)修改設置,而不是在 /lib/systemd/system/docker.service 中進行更改,因為它會在重新啟動時自動恢復到已知的良好值(找不到證據在文件中,但它似乎是這樣發生的)。

引用自:https://serverfault.com/questions/1056929