当 docker 需要 sudo 才能运行时,是否有可能在没有主机 root 权限的情况下进入 docker 容器?

当 docker 需要 sudo 才能运行时,是否有可能在没有主机 root 权限的情况下进入 docker 容器?

据我所知,人们通常为普通用户开放 docker 组,这样他们就可以拥有一个单独的环境来做几乎任何事情,而无需主机的 root 权限。

但是如果docker命令需要通过运行sudo,那么sudo docker exec -it CONTAINER /bin/bash这是否是一个隐藏信息的好方法,例如容器中的源代码?

我的问题是,更具体地说,如果sudo需要运行docker,是否可以在没有 root 权限的情况下查看容器内部的内容,甚至访问它?

答案1

不需要以 root 身份运行 Docker。

Docker 有一个“无根”模式,允许 Docker 容器在用户空间中运行。但是,链接的文档中列出了此操作模式的一些限制。在此模式下,相关用户可以完全访问容器及其内容。

不过,我个人没有在无根模式下运行 Docker 的经验。

如果要将 Docker 作为系统范围的服务运行,则需要root访问权限或docker组成员身份。在此模式下,您可以运行以下命令(作为docker组成员 - 使用 nginx 作为示例,并bash在容器中提供):

docker exec -it nginx /bin/bash

您进入容器的终端(以 root 身份):

root@e209bdb1fe51:/#

因此,即使您不是本地机器上的 root 身份(但是是组的成员docker),您也将是容器内的 root 身份。

相关内容