我想创建一个Linux服务器,但我遇到一个问题:
- 如何知道何时应该对给定的应用程序使用 Docker 或 Lxc 而不是本地安装它?
例如,在我的服务器上(可能是 CentOS 最小版、Arch Linux 或 Alpine Linux,具体取决于这个问题的答案),我想要安装:
- Python 3
- FTP 服务器
- 单核细胞增多症
- PHP
- NGiNX
- Docker(或 Lxc)
- 许多其他应用程序
表演怎么样:
- 有没有容器我的服务器速度会更快吗?
- 它会更安全吗(CVE漏洞)
- 维护(软件更新)会更容易吗?
答案1
裸机(我认为你的意思是天生地) 通常比任何类型的虚拟化/容器化都具有更高的性能,这是因为硬件、内核和操作系统之间的系统开销较少。
容器将为您带来管理操作系统的多个实例(快照、迁移、映像转储/备份、资源优先级等)的好处,而不会产生严重的性能损失。然而,与完全虚拟化相比,容器化安全性确实有一些缺点。
当性能不是那么重要时,完整的虚拟机会是更好的选择,因为完全虚拟化通常涉及模拟各种硬件设备。每个虚拟实例都是一个完整的操作系统(硬件直通除外)进程、内核、库和在其中运行的应用程序。攻击者通过容器突破完全虚拟化的主机被认为要困难得多,但这种风险/攻击面会因供应商而异。
如果您没有执行极其繁重的 I/O 或 CPU 利用率,您可能不会看到容器或完整 VM 的性能受到很大影响。例如,对于软件测试或编译节点之类的应用,容器化将是更好的选择,因为您希望获得最佳性能以缩短开发前置时间,但您仍然希望能够轻松地快照或回滚安装(使用裸机无法轻松做到这一点)。
您可能需要对软件堆栈进行一些实验,但根据您提供的列表,我将进行完全虚拟化以获得安全性和 VM 管理的所有好处。