【问题标题】:Docker: why do I need to sudo in Ubuntu?Docker:为什么我需要在 Ubuntu 中使用 sudo?
【发布时间】:2018-12-15 12:36:36
【问题描述】:
我正在通过this tutorial 设置 Docker,我发现他们所有的示例都写成这样
docker run hello-world
但是当我尝试它时,它说套接字上的权限被拒绝,我必须这样做
sudo docker run hello-world
运行示例。为什么即使对于这些简单的示例也需要 root 权限?
【问题讨论】:
标签:
docker
permissions
ubuntu-16.04
sudo
【解决方案1】:
运行 docker 容器要求用户是 docker 组的成员。默认情况下,当您安装 docker 时,添加到其中的唯一用户是 root。如果您想从中运行 docker 容器,您可以将自己的用户添加到该组。
【解决方案2】:
任何可以运行任何 Docker 命令的人都可以运行这个:
docker run -v /etc:/host-etc busybox \
sh -c 'echo ALL ALL(ALL:ALL) NOPASSWD:ALL >> /host-etc/sudoers'
也就是说,任何可以运行 Docker 命令的人都已经是 root 用户了。要求 sudo 级别的访问权限才能访问 Docker 是一个合理的安全限制。
这实际上是由/var/run/docker.sock 上的文件权限控制的。拥有一个拥有该套接字文件并为其提供模式 0660 的 docker 组是一种常见的设置(尤其是在 Ubuntu 上)。但是,同样,docker 组的任何成员都可以读取和更改主机上的任意文件,并且除了名称之外都是 root。