对于网络托管,我的公司希望为每个 Web 应用程序使用 Docker 容器,并使用反向代理作为前端。这很有效,但我们正在寻找一种方法来让我们的用户管理自己的应用程序,管理员将通过反向代理和 DNS 控制公共和私人访问。
但是我们不能让用户授权启动/停止docker实例,因为可以向docker守护进程发送命令的用户可以做任何他想做的事情(如上所述这里和这里)。
那么我们如何让用户处理某些特定 Docker 容器的启动/停止和配置呢?
目前唯一的解决方案(发现这里)是让docker检测注册表中的更改以下载并重新启动更新,例如岗楼)。
另一种选择是等待用户命名空间支持以避免 root 容器用户可以访问 root 主机用户,但这足够吗?
编辑:docker 的安全性不是那么强,但就我们的情况而言:
- 用户仅限于经过身份验证的内部员工
- 用户无法直接访问 docker 守护进程(这是我的问题的重点)
- 这是一个比使用一百个 vhost 的单实例 Apache 更好的解决方案
- 我们需要处理有关替代 Web 框架/外来配置(node.js、meteor、ruby)而不是传统 LAMP 的需求,容器非常适合开发人员将其应用程序转移到托管平台。
- 这是我们正在进行的一项实验,我们希望在不久的将来能够出现类似的解决方案原子项目和/或用户命名空间的支持将带来更好的保证。
答案1
您可以在客户界面上添加一个选项,向他显示他拥有的容器,并让他通过以下方式重新启动他的容器Docker 远程 API
但这仅当您拥有安全的用户界面和良好的用户权限管理时才是一种选择。
请注意,Docker 远程 API 将在 10 月底的下一个版本 1.9 中发生变化。路线图 1.9