为什么添加用户到docker用户组允许docker作为非root用户运行?

Docker需要root权限才能运行。 本指南提供了有关将docker作为非root用户进行pipe理的说明,它基本上将用户添加到docker用户组,之后我可以使用sudo运行docker命令。 有人可以解释为什么这个工作?

您必须区分dockerd命令行工具dockerd和后台守护程序dockerd 。 守护进程以root身份运行,负责运行容器。 命令行工具docker给守护进程指令,做什么。 这个通信是通过默认的unix socket /var/run/docker.sock的。 ls -l产量

 srw-rw---- 1 root docker 0 Aug 20 11:22 /var/run/docker.sock 

您可以看到,属于组docker的用户可以写入套接字,从而能够给出可以根权限执行的守护进程指令。

您也可以将守护程序configuration为在networking端口上侦听。 同样,您可以通过环境variablesDOCKER_HOST 告诉命令行工具使用远程DOCKER_HOST守护进程。 通过这样做,您可以向远程主机上的docker守护进程发出指令。


还有一点值得一提。 使用sudo将用户添加到组中,然后使用sudo执行其他命令时,通常sudo不会再次提示您input密码,因为它已经caching了一段时间。