Docker 仅在 VM 上而不在物理机上?

Docker on VMs only and not on Physical Machine?

我在同一地点的数据中心有 2 台物理机器,我想充分利用它。我正在考虑使用 Docker、Weave to 运行 一个高度安全的 Web 应用程序(Tomcat、Mysql、Mongodb)并希望在安全方面格外小心.下面是我的架构。有 docker 部署经验的人可以提供反馈吗?

a) 使用SSH 在两台物理机上创建centos 6 OS 并安装Shorewall。 Shorewall FW 将仅限制 ssh 和端口 80,443,80,443 将转发到虚拟机 运行ning tomcat 容器。此物理机上没有安装docker。

b) 在两台物理机上安装 Virtualbox 并启动多个虚拟机,每个虚拟机都可以通过物理机上的 SSH 隧道访问,从而提供额外的安全层

c) docker 并在每个虚拟机上构建编织网络,因此在作为主机的虚拟机上构建编织网络

d) 所有 tomcat、mysql、mongodb 容器仅在 VM 上启动。

此配置的优点是我的物理机器和 Docker 是分开的,并增加了额外的安全层。

我正计划建立它。我想知道是否有人预料到任何问题或挑战或建议以更安全/稳健的方式使用 2 个服务器。

非常感谢任何指导或进一步阅读的链接。

谢谢 英国。

您的基础架构是一个好的开始,但只是一个开始。

您需要正确配置这些应用程序以提高安全性(无论它们位于 运行 的方式或位置,是否在 docker 容器中):例如,确保您的header 响应不包括应用程序的名称及其版本(有关更多信息,请参阅 Apache Tomcat 8 Security considerations or "Improving Apache Tomcat Security")

此外,docker 容器的问题是进程 运行 在这些容器中作为 root 和 make system calls directly to the kernel(默认情况下没有范围限制,意思是 all 允许系统调用。
这就是 docker 1.9 开始用 PR 12648 (Phase 1 implementation of user namespaces as a remapped container root) and issue 15187

做的事情
  • 所有容器都有自己的用户命名空间(有效防止使用 --net=host--net=container:<id>)。
  • daemon-wide 设置为所有容器重新映射 root 用户。