minikube - 为什么不应该使用“docker”驱动程序具有root特权

15

尝试以docker driver启动minikube时,作为root用户出现以下错误:

$ minikube start --driver=docker
* minikube v1.16.0 on Ubuntu 18.04
* Using the docker driver based on user configuration
* The "docker" driver should not be used with root privileges.
* If you are running minikube within a VM, consider using --driver=none:
*   https://minikube.sigs.k8s.io/docs/reference/drivers/none/

X Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges.

使用Docker驱动程序时以root用户身份有哪些问题?


1
https://github.com/kubernetes/minikube/issues/7903#issuecomment-619465709 - DannyB
3个回答

20

这是一个有关安全性的问题。在官方 docker 文档 中明确写出了风险。

根据文档 -

Docker 允许您在 Docker 主机和客户端容器之间共享目录;并且它允许您这样做而不限制容器的访问权限。这意味着您可以启动一个容器,其中 /host 目录是您主机上的 / 目录;容器可以在没有任何限制的情况下更改您主机的文件系统。

要解决您的问题,您可以按照以下步骤进行:
添加新用户
adduser newUser
usermod -aG sudo newUser
su - newUser
登录新创建的用户
su - newUser
将用户添加到Docker组
sudo groupadd docker
sudo usermod -aG docker $USER
使用以下命令重新登录并启动minikube
minikube start --driver=docker
验证 minikube 是否正在运行
docker ps

这里有一个Github 问题,你可以看一下。

由于我的回答导致了混淆,因此我更新了答案

这些步骤将解决你在尝试启动minikube时遇到的错误。但是这些步骤不会解决安全问题,因为docker组授予与root用户等效的权限。要在没有root特权的情况下运行docker,即以rootless模式运行,您需要按照这个文档进行操作。


2
当您运行这些步骤将用户添加到docker组时,您为该用户提供了对主机上root帐户的无密码访问权限。因此,我不确定这解决了什么问题。 - BMitch
这些步骤将解决@RafaelJan遇到的错误。但是,这些步骤不能解决安全问题,因为docker组授予等同于root用户的特权。要以非root特权运行docker,他需要遵循此文档https://docs.docker.com/engine/security/rootless/。 - Dipto Mondal
将用户添加到docker组,以下命令适用于我: "sudo chmod 777 /var/run/docker.sock sudo chown ${USER}:docker /var/run/docker.sock。链接:"https://dev59.com/9FYN5IYBdhLWcg3wK1fO - Shubham Jain

4

登录root用户并运行以下命令。

useradd testuser
usermod -aG docker testuser

使用su - testuser(或打开另一个终端并登录到testuser)

minikube start --driver=docker

它正常工作了!


useradd 命令不会创建用户文件夹。在运行 minikube 时会出现问题;我正在尝试在 ubuntu:20.04 上运行。 - pravin

0

你现在使用哪个用户?在终端上输入。

whoami

或者

echo $USER

然后你可以看到你的用户名,但这不是必须的。

只需使用以下命令将用户添加到Docker组即可

sudo usermod -aG docker $USER

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接