我正在this tutorial设置Docker的过程中,发现他们的所有示例都写成
docker run hello-world
但是当我尝试时,它说套接字上的权限被拒绝,我必须这样做
sudo docker run hello-world
运行示例。为什么即使对于这些简单的示例,也需要root特权?
答案 0 :(得分:4)
运行docker容器要求用户是docker
组的成员。默认情况下,安装docker时,添加到其中的唯一用户是root
。如果要从该组运行Docker容器,可以将自己的用户添加到该组。
答案 1 :(得分:1)
任何可以运行任何Docker命令的人都可以运行以下命令:
event.shiftKey
也就是说,任何可以运行Docker命令的人都已经是root。要求sudo级别访问权限才能访问Docker是安全的限制。
确实,这由docker run -v /etc:/host-etc busybox \
sh -c 'echo ALL ALL(ALL:ALL) NOPASSWD:ALL >> /host-etc/sudoers'
上的文件权限控制。拥有一个拥有该套接字文件并为其提供模式0660的/var/run/docker.sock
组是一种常见的设置(尤其是在Ubuntu上)。但是,同样,docker
组成员中的任何人都可以读取和更改主机上的任意文件,并且除了名称以外,所有人都是root。