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

我的任务是使用Docker在单个Amazon EC2实例上设置多个独立的客户端特定的Web应用程序实例。 基本应用程序对于每个实例基本相同,但是已经为每个客户端定制。

目标如下:

1)每个集装箱将被固定和“沙箱”,使得没有一个集装箱可能影响其他人或主人。 这是我的理解Docker做这个,但我只是想确定。

2)每个容器都是“完整的”,并有自己的用户,数据库,访问密钥等。

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

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

我知道这可能违背了Docker的理念,但是,这是可行的,那么最好的方法是什么? 过去,当每个主机只有一个客户端时,我们使用SSH隧道来访问相关的端口,但是在同一个主机上有多个客户端可以使用这种安全的方法吗? 像Nginx或Apache这样的反向代理服务器可以更好地服务于这种设置吗? 我应该在这里指定,我们目前正在寻找只有一个域来访问这个主机。

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

任何帮助深表感谢。

这是可行的,但解决scheme太大,不能包含在一个典型的堆栈溢出答案。 这是PaaS提供商如dotCloud,Heroku等提供的价值的一部分。

你可以尝试推出自己的多租户解决scheme,也许从Deis开始,但他们警告 。

安全性很难,尤其是当你试图让你的客户变得容易的时候。

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

  • 第1集: 内核命名空间 (docker帮助)
  • 第2集: cgroups (docker帮助)
  • 第3集: AUFS (docker帮助)
  • 第4集: GRSEC (你的内核,由你决定)
  • 第5集: 分发路由 (你的networking,尽pipeDocker Swarm可能会帮助你)
  • 第6集: 内存优化 (由用户决定)

值得注意的偏见:我曾经为dotCloud和现在的Docker工作。