控制对同一主机上多个 Docker 容器的访问

Controlling access to multiple Docker containers on the same host

我的任务是使用 Docker 在单个 Amazon EC2 实例上设置多个隔离的、特定于客户端的 Web 应用程序实例。每个实例的基本应用程序基本相同,但已针对每个客户端进行了定制。

目标如下:

1) 每个容器都将受到保护,"sandboxed" 这样任何一个容器都不会影响其他容器或主机。我的理解是 Docker 无论如何都会这样做,但我只是想确定一下。

2) 每个容器都是 "complete" 并且有自己的用户、数据库、访问密钥等

3) 与一个容器关联的用户应该无法访问任何其他容器或主机的任何方面。

我搜索了类似的问题,有些似乎触及了这个想法,但没有完全回答我的问题。

我知道这可能违背 Docker 理念,但除此之外,这是否可行,实现这一目标的最佳方法是什么?过去,当每个主机只有一个客户端时,我们使用 SSH 隧道访问相关端口,但是对于同一主机上的多个客户端,是否有一种安全的方法来执行此操作?像 Nginx 或 Apache 这样的反向代理会更好地服务于此设置吗?我应该在这里说明,我们目前正在考虑只有一个域来访问此主机。

我想这个问题可以归结为,当 运行 单个主机上有多个客户端容器时,如何限制每个容器级别的远程访问?

非常感谢任何帮助。

这是可行的,但解决方案太大,无法包含在典型的 Stack Overflow 答案中。这是 dotCloud、Heroku 等 PaaS 提供商提供的部分价值。

您可以尝试推出自己的多租户解决方案,也许可以从 Deis 之类的东西开始,但它们 warn against it

安全很难,尤其是当您试图为客户提供便利时。

您可能会发现 dotCloud 博客中的这个系列很有帮助:

显着偏见:我曾经为 dotCloud 工作,现在 Docker。