切换到Docker根用户

切换到Docker根用户,docker,root,sudo,Docker,Root,Sudo,我正在Docker上工作,在Docker CLI上执行任何命令之前,我需要切换到使用该命令的root sudo su-root 有人能告诉我为什么我们需要切换到root用户才能在Docker Engine上执行任何操作吗?对于Docker cli命令,您不需要切换到root,将您的用户添加到Docker组是很常见的 sudo groupadd docker sudo usermod -aG docker $USER 见: docker以root用户身份运行的原因: Docker守护进程绑定到U

我正在Docker上工作,在Docker CLI上执行任何命令之前,我需要切换到使用该命令的root

sudo su-root


有人能告诉我为什么我们需要切换到
root
用户才能在Docker Engine上执行任何操作吗?

对于Docker cli命令,您不需要切换到
root
,将您的用户添加到
Docker
组是很常见的

sudo groupadd docker
sudo usermod -aG docker $USER
见:

docker以root用户身份运行的原因:

Docker守护进程绑定到Unix套接字而不是TCP端口。默认情况下,Unix套接字由root用户拥有,其他用户只能使用sudo访问它。Docker守护进程始终以root用户身份运行


使用
docker
命令,您可以轻松地获得对主机文件系统任何部分的根级别访问。最基本的例子是

docker run --rm -v /:/host busybox cat /host/etc/shadow
这会给你一个加密密码文件,你可以在空闲时离线破解;但是,如果我真的想接管这台机器,我只需要将自己的代码写入
/host/etc/passwd
/host/etc/shadow
中,创建一个没有密码的备用uid-0用户,然后进城

Docker实际上没有任何方法来限制可以运行的
Docker
命令或可以装载的文件或卷。因此,如果您可以运行任何
docker
命令,您就可以不受限制地访问主机。把它放在sudo后面是合适的


另一个重要的推论是,使用
dockerd-H
选项使Docker套接字网络可访问是要求您的系统远程根目录。谷歌“Docker cryptojacking”获取更多细节和突出的现实例子。

因为安全性?@emix这是将用户切换为root用户的唯一原因吗?还有其他原因吗?@emix我们找到了答案。。。也谢谢你:)意味着如果我创建任何用户并将其添加到Docker组,我是否能够执行根用户可以执行的所有Docker命令?@invador问题是
为什么需要升级权限。你的回答提供了一种克服它的方法,但并没有真正回答被问到的实际问题。不过,你必须意识到自己加入
docker
团队的含义。如果您运行具有文件系统访问权限的恶意容器,则可能会危害您的系统。记住这一点。最好使用sudo简单地使用docker命令。@invad0r从docker文档中我了解到通信是通过socket进行的,socket通常是IP和端口的组合,它基本上使用什么端口?