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

Posted

技术标签:

【中文标题】Docker:为啥我需要在 Ubuntu 中使用 sudo?【英文标题】: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 权限?

【问题讨论】:

SO 是针对编程问题,而不是关于使用或配置 Linux 及其应用程序的问题。 SuperUser 或 Unix & Linux 将是解决此类问题的更好地方。 【参考方案1】:

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

【讨论】:

我忽略了设置的这方面,这里有正确的说明:docs.docker.com/install/linux/linux-postinstall【参考方案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。

【讨论】:

以上是关于Docker:为啥我需要在 Ubuntu 中使用 sudo?的主要内容,如果未能解决你的问题,请参考以下文章

docker的宿主系统是centos,为啥可以运行ubuntu的镜像

为啥 Ubuntu docker 映像不是 VM [重复]

为啥docker里面的/dev/shm没有bash权限

为啥docker容器立即退出

为啥我在Ubuntu下通过apt-get安装的docker-compose没有down命令?

为啥我的 Docker 容器中的网络/互联网这么慢?