默認情況下, docker 命令會使用 Unix socket 與 Docker 引擎通訊。 而只有 root 用戶和docker 組的用戶才可以訪問 Docker 引擎的Unix socket。 (可以參考:Docker架構及組件剖析)
docker 組內用戶執行命令的時候會自動在所有命令前添加 sudo。因為設計或者其他的原因,Docker 給予所有 docker 組的用戶相當大的權力(雖然權力只體現在能訪問 /var/run/docker.sock 上面)。
默認情況下,Docker 軟件包是會默認添加一個 docker 用戶組的。Docker 守護進程會允許 root 用戶和 docker組用戶訪問 Docker。
出於安全考慮,一般 Linux 系統上不會直接使用 root 用戶。 因此,更好地做法是將需要使用 docker 的用戶加入 docker用戶組。
解決辦法:
1.創建docker組(已經存在則不用創建)
sudo groupadd docker
2.添加當前用戶到docker組
sudo gpasswd -a ${USER} docker
3.重啟 docker服務
sudo systemctl restart docker
4.切換到docker組
newgrp docker
參考:
https://blog.csdn.net/londa/article/details/106282717
https://blog.csdn.net/nzjdsds/article/details/82051127
https://blog.csdn.net/qq_41918771/article/details/103666135