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

ada*_*key 12 permissions sudo docker ubuntu-16.04

我正在完成本教程设置 Docker,我发现他们的所有示例都是这样编写的

docker run hello-world
Run Code Online (Sandbox Code Playgroud)

但是当我尝试时,它说套接字上的权限被拒绝,我必须这样做

sudo docker run hello-world
Run Code Online (Sandbox Code Playgroud)

运行示例。为什么即使对于这些简单的例子也需要 root 权限?

Mur*_*nik 11

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

  • 我忽略了设置的这一方面,这里有正确的说明:https://docs.docker.com/install/linux/linux-postinstall/ (4认同)

Dav*_*aze 5

任何可以运行任何 Docker 命令的人都可以运行以下命令:

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

也就是说,任何可以运行 Docker 命令的人都已经是 root 了。需要 sudo 级别的访问权限才能访问 Docker 是一个合理的安全限制。

这实际上是由/var/run/docker.sock. 拥有一个docker拥有该套接字文件的组并为其提供模式 0660 是一种常见设置(尤其是在 Ubuntu 上)。但是,同样,任何属于该docker组成员的人都可以读取和更改主机上的任意文件,并且除了名称之外的所有文件都是 root。