我们有一个应用程序在 docker 机器中运行许多容器。要启动它,我们使用码头工人终端。但是,任何有权访问主机的人都可以运行 docker 计算机、启动和停止容器或加载新容器
我们如何锁定对 docker 终端的访问,以便只有授权用户才能运行命令
比这更糟糕。 任何可以运行任何 Docker 命令的人都可以运行:
docker run -it -v /:/host -u root ubuntu sh
然后,他们将拥有一个根级 shell,该 shell 可以不受限制地访问主机的文件系统。
没有(简单的(方法可以进一步限制这一点。 您无法安全地使共享系统上不受信任的用户可以访问 Docker 访问权限。
典型的设置具有由 root 拥有的 Docker 套接字和一个专用的"docker"组,并且无法全局访问。 如果你有有限数量的用户已经拥有 sudo 访问权限(或者你不介意他们是否将其交给自己(,他们可以sudo run docker
,或者您可以将他们添加到"docker"组中,其他用户将无法运行 Docker 命令;他们可以访问已在运行的容器中的服务。 (如果您已更改 Docker 守护程序设置,使其侦听 TCP 套接字,则您已向可以访问套接字的任何人授予了对主机的根访问权限。
在 Docker Machine 的特定情况下,它始终侦听 TCP 套接字,虽然无法在主机外访问它,但限制对它的访问的唯一方法是限制其 TLS 证书的分发。 我可能不会在开发系统以外的环境中使用它,因为我不能使用"更原生"的 Docker。