为什么添加用户到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了一段时间。