【问题标题】:Docker on VMs only and not on Physical Machine?Docker 只在虚拟机上而不是在物理机上?
【发布时间】:2015-12-05 07:01:27
【问题描述】:

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

a) 使用 SSH 在两台物理机上创建一个 centos 6 操作系统并安装 Shorewall。 Shorewall FW 将仅限制 ssh 和端口 80,443,并且 80,443 将转发到运行 tomcat 容器的 VM。此物理机上未安装 docker。

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

c) 在每个虚拟机上构建 docker 和 weave 网络,从而在作为主机的虚拟机上构建 weave 网络

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

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

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

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

谢谢 英国。

【问题讨论】:

    标签: tomcat ssh docker virtualbox weave


    【解决方案1】:

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

    您需要正确配置这些应用程序以提高安全性(无论它们以何种方式或在何处运行,是否在 docker 容器中):例如,确保您的标头响应不包含应用程序及其版本(请参阅Apache Tomcat 8 Security considerations 或“Improving Apache Tomcat Security”了解更多信息)

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

    • 所有容器都有自己的用户命名空间(有效防止使用--net=host 或--net=container:<id>)。
    • 守护程序范围的设置会重新映射所有容器的 root 用户。

    【讨论】:

    • 非常感谢 VonC 的 cmets。你碰巧知道设置 Docker 容器的最佳实践吗?我看到了各种教程,但没有看到生产使用的具体标准。
    • @uk1974 主要是 docs.docker.com/compose/production,但除此之外,我今天看到的设置涉及最近的 libnetwork 功能 (techrepublic.com/article/…)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2014-02-06
    相关资源
    最近更新 更多