Docker:为什么在Linux中需要使用sudo?

23

我正在按照这个教程学习如何设置Docker,发现他们的所有示例都是这样写的:

docker run hello-world

但是当我尝试时,它显示套接字权限被拒绝,我必须执行以下操作

sudo docker run hello-world

如何运行这些示例。即使对于这些简单的示例,为什么仍需要root权限?


1
Stack Overflow是用于编程问题的,而不是关于使用或配置Linux及其应用程序的问题。[SuperUser](https://superuser.com)或[unix.se]将是更好的提问场所。 - Barmar
2个回答

21

运行Docker容器需要用户成为docker组的成员。默认情况下,当您安装Docker时,唯一被添加到该组的用户是root。如果您想从自己的用户中运行Docker容器,可以将自己的用户添加到该组中。


11

要求sudo级别的访问权限才能访问Docker是一种有效的安全限制。否则,任何能够运行任何Docker命令的人,都可以运行这个命令:

docker run -v /etc:/host-etc busybox \
  sh -c 'echo ALL ALL(ALL:ALL) NOPASSWD:ALL >> /host-etc/sudoers'

也就是说,任何能够运行Docker命令的人几乎都是超级用户。实际上,这由/var/run/docker.sock上的文件权限控制。拥有一个docker组来拥有该套接字文件并赋予它0660模式是一种常见的设置(特别是在Ubuntu上)。但是,再次强调,任何属于docker组的成员都可以读取和更改主机上的任意文件,并且在所有方面都是超级用户。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接