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的镜像