据我所知,人们通常为普通用户开放 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 身份。