切换到 Docker 根用户

Switch to Docker Root User

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

使用的 root

sudo su - root

谁能告诉我为什么我们需要切换到 root 用户才能在 Docker 引擎上执行任何操作?

对于 docker cli 命令,您不需要切换到 root,通常将您的用户添加到 docker

sudo groupadd docker
sudo usermod -aG docker $USER

参见:https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user

docker 是 运行 作为 root 的原因:

The Docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The Docker daemon always runs as the root user.

使用 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 套接字网络可访问要求您的系统获得远程 root 权限。 Google "Docker cryptojacking" 了解更多详细信息和突出的现实生活示例。