一个应用部署在哪层上是个很难的决定,所以我决定列一套选择器

选择 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 中安装,既能降低攻击面,又能保留正真操作系统所需的特权功能。