一个应用部署在哪层上是个很难的决定,所以我决定列一套选择器
选择 VM 的理由
- 非 Linux 的
- 需要 Linux 特权的
选择 Docker 的理由
- 版本经常变更的
- 一次性即用即抛的
- 需要多版本共存的
选择 LXC 的理由
- 没有提供 docker 安装方式的应用
各家都能实现
必须得长时间运行的/系统启动时运行的/和系统网络相关的
需要硬件资源直通的
有定时任务的
经常要登入上去的
多个进程的
如果我真得想要以 Docker 为基座部署所有服务,那就不会把 Docker Daemon 放在 LXC、VM 上,而是直接 Bare Metal 放在 PVE 主机上以 Unprivileged 模式部署。因为中间多的一层总觉得很蠢,单节点环境也用不上迁移、备份的功能。
至于如何安装 Docker,就如 LXC vs LXD vs Proxmox Containers vs Docker - FAQ - Proxmox VE 所说,最好是在独立的 VM 中安装,既能降低攻击面,又能保留正真操作系统所需的特权功能。