能否在Docker容器中运行TrueNAS?保留Ubuntu 20的部署方案咨询
Docker部署TrueNAS的可行性结论
这个方案完全不可行,不建议尝试。
核心原因很简单:TrueNAS是基于FreeBSD内核构建的全量操作系统发行版,它的核心能力——包括ZFS存储池管理、内核态的存储校验、硬件设备直通、服务权限管控——全部深度绑定FreeBSD的内核接口,根本不是一个可以剥离出来跑在Linux用户态(也就是Docker容器的运行环境)的独立软件。
现在网上能搜到的所谓“Docker运行TrueNAS”的镜像,都是第三方爱好者做的残缺壳子:最多能把TrueNAS的Web管理界面跑起来,但是一旦要配置存储池、挂载磁盘、开共享服务就会直接报错,我身边有好几个朋友踩过这个坑,折腾一下午最后发现连磁盘读写权限都拿不到,WebUI一保存配置就崩溃,完全没有实际使用价值。而且TrueNAS官方从来没有发布过适配Linux容器的版本,这类非官方方案没有任何维护保障,踩坑成本极高。
不删除现有Ubuntu 20前提下的可行部署方案
- KVM虚拟机直通部署
这是目前社区最成熟、最常用的兼容方案:在现有Ubuntu 20上安装KVM/QEMU虚拟化栈,把TrueNAS作为独立的全虚拟机运行。注意两个关键配置:一是要把专门用来做存储的物理硬盘通过磁盘直通的方式直接分配给TrueNAS虚拟机,不要用Ubuntu上的虚拟磁盘文件承载ZFS,否则会大幅损失ZFS的性能和数据校验能力;二是把虚拟机的网络设置为桥接模式,直接接入局域网,这样TrueNAS的服务和物理机部署没有任何访问差异。这个方案的优势是可以同时保留现有Ubuntu的运行环境,不用重启就能用TrueNAS的所有功能。 - 双系统引导部署
如果对存储性能要求极高,不能接受虚拟化带来的少量损耗,可以从现有Ubuntu的磁盘上缩容划出一块独立的空闲空间,通过GRUB引导实现双系统启动。装TrueNAS的时候一定要仔细选择安装目标:只把之前划出来的空闲空间分配给安装程序,绝对不要选中现有Ubuntu所在的整盘,避免误删现有系统。这个方案的缺点是两个系统不能同时运行,切换需要重启。 - 功能等价替代栈搭建
很多人选择TrueNAS其实就是需要ZFS存储、SMB/NFS共享、定时快照、媒体服务这些能力,完全没必要为了这些功能单独部署系统。可以直接在现有Ubuntu 20上安装原生ZFS工具集,用Samba/NFS搭建文件共享、配合cron做定时快照、通过Docker跑Jellyfin/Plex等媒体服务,功能和TrueNAS的核心能力完全对齐。如果习惯了TrueNAS的Web操作逻辑,可以搭配Webmin这类带Web管理界面的工具,操作体验和TrueNAS的WebUI基本没有区别,还能完全保留现有Ubuntu的所有使用环境,没有额外的虚拟化或者双系统开销。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

