据我所知,容器比虚拟机轻量级得多,因为它们不虚拟化硬件,而是仅将在其中运行的软件与系统上其他容器中运行的软件隔离开来。
我的情况是,我买不起额外的服务器,而且我拥有的服务器都在运行虚拟机管理程序。我需要配置至少 6 个“服务器”来托管相对较小的 Web 应用程序实例(每个实例用于不同的客户)。为每台服务器配置一台新 VM 会很浪费,因此我计划设置 2 个 VM 并执行以下操作之一:
- 使用虚拟主机(apache)在每个 VM 上运行该应用程序的多个实例。或者
- 在虚拟机上设置容器,这样我就可以隔离环境。
考虑到这一点,容器系统是否存在不可忽略的开销,使得在虚拟机中使用它们不是一个好主意,或者还有其他什么技术的我不想使用容器的原因是什么?
答案1
与虚拟机相比,Docker 非常轻量,虚拟机系统应该可以很好地运行容器。每个容器本质上都是作为一个独立的系统运行的,因此从系统稳定性的角度来看,它非常适合隔离。根据您的描述,这听起来像是 Docker 的理想用例。如果您确实尝试使用 Docker,请确保使用最新版本,一些较旧的版本存在一些相当严重的漏洞。运行 Docker 时需要考虑一些安全问题。
SELinux- SELinux 可感知容器,并会自动为每个容器创建一个随机命名的 MCS 标签。这有助于确保隔离,因为 LXC 容器本身并不被视为真正“包含”,尽管这种情况正在改善。
用户指令- 在每个 Dockerfile 中,建议的最佳做法是使用 USER 指令并让用户以默认 root 以外的帐户运行。这里的问题是用户必须存在于系统中。对于这个新用户来说,更改文件和目录的所有者/修改权限也可能会令人沮丧,但它有助于降低风险。我通常建议您在系统上创建一个“containeruser”或类似的东西,以帮助确保所有系统上都有一个通用用户,并且不会与系统的任何其他部分重叠。
否则,最困难的部分是管理容器并在必要时更新它们。
答案2
容器系统是否存在不可忽略的开销,这使得在虚拟机中使用它们不是一个好主意
做VMware vSphere 中的 Docker 容器性能帮你?
或者是否存在其他技术原因导致我不想使用容器?
我对 Docker 不太了解,因为我还没有用过它。我认为与 VM 管理软件相比,该管理软件还不够成熟……但我是一名 vSphere 管理员,因此可能有偏见。
考虑到虚拟机上的 Docker,CoreOS 现已正式支持 vSphere 5.5. 因此至少 VMware 认为虚拟机上的 Docker/容器是可以的。