docker部署群晖DSM系统——快速体验群晖系统

以前想体验群晖的DSM系统往往都是用虚拟机等方式来玩群晖,部署起来不是很方便,正好前几日看到有个开源项目可以在docker下部署群晖DSM系统,就来试试体验一下群晖系统。

此教程为docker下部署群晖DSM系统,是为了体验群晖系统,不是在群晖下折腾docker!!!!

使用此方法仅仅是为了体验群晖系统,当然用来平时使用也没有啥问题,就是可能存在系统不稳定等情况。

一、优缺点

1、docker/docker compose部署简单,几条命令会ctrl c+v就可以部署成功。

2、支持arm/x86架构,但arm下为转译,除非m1这种性能足够强大的arm处理器,不然建议谨慎考虑。

3、系统/平台最好支持KVM,如果不支持也能用,但是性能受限。

4、系统建议为Ubuntu 22.04等新的内核系统,不然可能存在无/dev/kvm(kvm底层驱动)问题,部分云服务器可能也没有该驱动也无法调用kvm。

5、不包含Virtual Machine Manager 软件包,并且 Surveillance Station 不包含任何免费许可证。6、这个项目本身是Virtual DSM,所以安装在非群晖设备上存在相关风险。

二、检查是否支持KVM

ssh中输入以下命令:

sudo apt install cpu-checker
sudo kvm-ok

如果返回结果为则说明支持kvm,若返回错误,物理机请到bios中开启虚拟化,虚拟机请开启嵌套虚拟化。

INFO: /dev/kvm exists
KVM acceleration can be used

这里以turenas为例,开启嵌套虚拟化只需要把cpu模式改成host,实体机等请自行百度bios开启虚拟化方法。

三、docker/docker compose下部署DSM

docker-compose.yml:

version: "3"
services:
    dsm:
        container_name: dsm
        image: kroese/virtual-dsm:latest
        environment:
            DISK_SIZE: "20G"          #磁盘大小
            CPU_CORES: "4"            #使用cpu核心数
            RAM_SIZE: "2048M"         #使用内存大小
        devices:                      #如设备不支持kvm需删除此项
            - /dev/kvm
            - /dev/vhost-net
        cap_add:
            - NET_ADMIN                       
        ports:
            - 5000:5000               #端口映射
        volumes:
            - /opt/dsm:/storage       #磁盘挂载路径
        restart: on-failure           #重启策略
        stop_grace_period: 1m

docker:

docker run -it --rm -p 5000:5000 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 60 kroese/virtual-dsm:latest

威联通Container Station:

选择创建应用程序,把上面的docker-compose.yml复制进去,修改磁盘挂载路径,设置名称,验证yml无误,点击创建即可部署。

注:默认网络为桥模式,有需求请自行更换其他模式。

具体用法请查阅GitHub文档:
https://github.com/kroese/virtual-dsm

部署过程会比较久,请耐心等待。

当日志中出You can now login to DSM at port 5000则说明部署完成。

此时浏览器输入ip+5000就可以访问dsm系统。

配置好账户密码等信息后即可进入系统

进入到套件中心也可以查看到大部分套件都有

四、其他

如果需要生成预览图等功能需要修改sn以及mac等信息,需要配置环境变量

HOST_SERIAL        #(群晖有效序列号)
GUEST_SERIAL       #(vDSM的序列号)
VM_NET_MAC         #(vDSM中的 Mac 地址,请参阅“网络”选项卡)
THE END