
为啥有那么奇葩的需求呢?
因为某些众所周知的原因,加上消费降级(硬盘和内存越来越贵)的缘故,宿舍的AllInBoom准备寄回家里冷冻存放.但是某些自己私有的文件是要随时能访问到的,丢公共网盘又有点不放心,于是乎在寻找替代方案的时候,忽然发现之前和朋友合租的那台HKT传家宝竟然支持二次虚拟化,于是乎就有了这篇文章
首先如何看vps是否支持二次虚拟化, 直接执行 cat /proc/cpuinfo | grep svm 和 cat /sys/module/kvm_intel/parameters/nested 如果第一句命令输出有svm,第二句命令输出是Y,那说明有戏
然后开始写docker模板,5666和22是飞牛的管理端口和ssh端口,要开放其他的话自己加(8006是虚拟机vnc的端口,安装系统要用到,必须要),因为vps的资源有点紧张,我分了最小的资源给飞牛用,iso是飞牛的安装盘地址,直接在官网下载就好,/data/fn/storage是放虚拟化文件的目录,系统分区正常25G足够
version: "3.8"
services:
fn-docker:
image: qemux/qemu
container_name: fn-docker
privileged: true
restart: always
devices:
- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- 5666:5666
- 8007:8006
- 8022:22
environment:
RAM_SIZE: "1536M"
CPU_CORES: "2"
DISK_SIZE: "25G"
DEBUG: "N"
BOOT: "uefi"
VNC: "Y"
DISK_INTERFACE: "sata"
volumes:
- /data/fn/storage:/storage
- /data/fn/ovmf:/var/lib/ovmf
- /home/fnos.iso:/boot.iso
stop_grace_period: 2m
然后提前开放好端口,保存编排模板,然后docker compose up -d,等镜像自动拉完开机.
开机完后用浏览器访问8007端口,这是虚拟机的vnc界面,启动后,选择第二项,回车
然后选择硬盘,可以看到我们挂载的25G系统盘
然后确认,等它自己安装完(这里要一点点时间的,而且看不到进度条,不是卡死,不要做任何操作,不急不燥,坐和放宽)
看到这个界面之后,回车ok 

然后看到这句英文之后,执行docker compose down关机,开始挂载数据盘
1.在 DISK_SIZE: "25G" 的下面增加一句 DISK2_SIZE: "250G"
2.在 - /data/fn/storage:/storage 的下面增加一句 - /data/fn/storage2:/storage2
3.注释或者删掉- /data/iso/fnos.iso:/boot.iso:ro这一句,免得重启完后又进光盘安装模式了.
然后保存,执行docker compose up -d,不出意外的话,你将看到熟悉的飞牛启动界面
看到登录信息之后,说明系统安装这一步已经完成了
然后去宿主机的防火墙或者安全组禁用掉8007这个端口的外网访问,我们已经不用了.
然后在浏览器打开https://你vps的外网ip:5666/ (注意,不是你刚才在vnc看到的172开头的那个容器的ip),你就可以看到熟悉的飞牛安装界面了.
进入系统后,你可以看到两块硬盘挂载正常
然后打开一下ssh,用容器的IP+8022端口登录,登录也一切正常,测试下scp拷贝文件,也正常.
至此,飞牛docker化安装结束,这个飞牛系统和真机安装是一样的,除了里面的虚拟机用不了(毕竟虚拟化出来的系统),其他都正常.
千与琥珀,2026年05月24日