vdsm/virtual-dsm

GitHub: vdsm/virtual-dsm

在Docker容器中运行虚拟Synology DSM,方便快速部署和测试NAS环境。

Stars: 3822 | Forks: 474

Virtual DSM
[![Build]][build_url] [![Version]][tag_url] [![Size]][tag_url] [![Package]][pkg_url] [![Pulls]][hub_url]

在 Docker 容器中运行的虚拟 DSM。 ## 特性 ✨ - 多磁盘支持 - KVM 加速 - 支持升级 ## 使用 🐳 ##### 通过 Docker Compose: ``` services: dsm: container_name: dsm image: vdsm/virtual-dsm environment: DISK_SIZE: "256G" devices: - /dev/kvm - /dev/net/tun cap_add: - NET_ADMIN ports: - 5000:5000 volumes: - ./dsm:/storage restart: always stop_grace_period: 2m ``` ##### 通过 Docker CLI: ``` docker run -it --rm --name dsm -e "DISK_SIZE=256G" -p 5000:5000 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/dsm:/storage" --stop-timeout 120 docker.io/vdsm/virtual-dsm ``` ##### 通过 Kubernetes: ``` kubectl apply -f https://raw.githubusercontent.com/vdsm/virtual-dsm/refs/heads/master/kubernetes.yml ``` ##### 通过 Github Codespaces: [![在 GitHub Codespaces 中打开](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/733d70850d143848.svg)](https://codespaces.new/vdsm/virtual-dsm) ## 常见问题 💬 ### 如何使用? 非常简单!以下是步骤: - 启动容器,然后使用网络浏览器连接到[端口 5000](http://127.0.0.1:5000/)。 - 等待 DSM 完成安装 - 选择用户名和密码,之后您将进入桌面。 享受您的全新 NAS,并别忘了为这个仓库点星! ### 如何更改存储位置? 要更改存储位置,请在 compose 文件中包含以下绑定挂载: ``` volumes: - ./dsm:/storage ``` 将示例路径 `./dsm` 替换为所需的存储文件夹或命名卷。 ### 如何更改磁盘大小? 要扩展默认的 256 GB 大小,请在 compose 文件中找到 `DISK_SIZE` 设置,并将其修改为首选容量: ``` environment: DISK_SIZE: "512G" ``` ### 如何添加多个磁盘? 要创建额外磁盘,请按如下方式修改您的 compose 文件: ``` environment: DISK2_SIZE: "500G" DISK3_SIZE: "750G" volumes: - ./example2:/storage2 - ./example3:/storage3 ``` ### 如何直通磁盘? 可以通过以下方式将磁盘设备或分区直接添加到 compose 文件中: ``` devices: - /dev/sdb:/disk1 - /dev/sdc1:/disk2 ``` 确保磁盘完全为空(没有文件系统),否则 DSM 可能无法将其格式化为卷。 ### 如何更改 CPU 或 RAM 的数量? 默认情况下,Virtual DSM 将被允许使用 2 个 CPU 核心和 2 GB RAM。 如果要调整,可以使用以下环境变量指定所需数量: ``` environment: RAM_SIZE: "4G" CPU_CORES: "4" ``` ### 如何验证我的系统是否支持 KVM? 首先使用此图表检查您的软件是否兼容: | **产品** | **Linux** | **Win11** | **Win10** | **macOS** | |---|---|---|---|---| | Docker CLI | ✅ | ✅ | ❌ | ❌ | | Docker Desktop | ❌ | ✅ | ❌ | ❌ | | Podman CLI | ✅ | ✅ | ❌ | ❌ | | Podman Desktop | ✅ | ✅ | ❌ | ❌ | 之后,您可以在 Linux 中运行以下命令来检查系统: ``` sudo apt install cpu-checker sudo kvm-ok ``` 如果 `kvm-ok` 返回错误指示无法使用 KVM,请检查: - BIOS 中是否启用了虚拟化扩展(`Intel VT-x` 或 `AMD SVM`)。 - 如果您在虚拟机中运行容器,是否启用了“嵌套虚拟化”。 - 您没有使用云服务提供商,因为大多数云提供商的 VPS 不允许嵌套虚拟化。 如果 `kvm-ok` 没有返回任何错误,但容器仍然报错缺少 KVM 设备,可以在 compose 文件中添加 `privileged: true`(或在 `docker` 命令中使用 `sudo`)以排除权限问题。 ### 如何为容器分配独立 IP 地址? 默认情况下,容器使用桥接网络,与主机共享 IP 地址。 如果要为容器分配独立 IP 地址,可以按如下方式创建 macvlan 网络: ``` docker network create -d macvlan \ --subnet=192.168.0.0/24 \ --gateway=192.168.0.1 \ --ip-range=192.168.0.100/28 \ -o parent=eth0 vdsm ``` 确保将这些值修改为与您的本地子网匹配。 创建网络后,将您的 compose 文件更改为如下所示: ``` services: dsm: container_name: dsm .... networks: vdsm: ipv4_address: 192.168.0.100 networks: vdsm: external: true ``` 这种方法的一个额外好处是,您无需再执行任何端口映射,因为所有端口默认都会公开。 ### DSM 如何从我的路由器获取 IP 地址? 配置容器为 [macvlan](#how-do-i-assign-an-individual-ip-address-to-the-container) 后,DSM 可以像其他设备一样,通过从路由器请求 IP 成为家庭网络的一部分。 要启用此模式,其中容器和 DSM 将拥有独立的 IP 地址,请在 compose 文件中添加以下行: ``` environment: DHCP: "Y" devices: - /dev/vhost-net device_cgroup_rules: - 'c *:* rwm' ``` ### 如何直通 GPU? 要直通您的 Intel GPU,请在 compose 文件中添加以下行: ``` environment: GPU: "Y" devices: - /dev/dri ``` ### 如何安装特定版本的 vDSM? 默认情况下,将安装 7.2 版本,但如果希望使用旧版本,可以在 compose 文件中添加 `.pat` 文件的下载 URL,如下所示: ``` environment: URL: "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_VirtualDSM_42218.pat" ``` 使用此方法,甚至可以在保持文件数据完整的同时在版本之间切换。 或者,也可以跳过下载并使用本地文件,通过在 compose 文件中绑定它,如下所示: ``` volumes: - ./DSM_VirtualDSM_42218.pat:/boot.pat ``` 将示例路径 `./DSM_VirtualDSM_42218.pat` 替换为所需 `.pat` 文件的文件名。在这种情况下,`URL` 的值将被忽略。 ### 与标准 DSM 相比有什么区别? 只有两个微小差异:虚拟机管理器包不可用,且监控中心将不包含任何免费许可证。 ### 这个项目合法吗? 是的,这个项目只包含开源代码,不发行任何受版权保护的材料。它也不试图规避任何版权保护措施。因此,根据所有适用法律,这个项目是合法的。 然而,通过安装 Synology 的 Virtual DSM,您必须接受其最终用户许可协议,该协议不允许在非 Synology 硬件上安装。因此,只在官方 Synology NAS 上运行此容器,因为任何其他使用都将违反其条款和条件。 ## 星星 🌟 [![Stars](https://starchart.cc/vdsm/virtual-dsm.svg?variant=adaptive)](https://starchart.cc/vdsm/virtual-dsm) ## 免责声明 ⚖️ *只在 Synology 硬件上运行此容器,其最终用户许可协议不允许任何其他使用。本项目中提到的产品名称、徽标、品牌和其他商标是其各自商标持有人的财产。本项目与 Synology, Inc. 无关,未经其赞助或认可。*
标签:Awesome, DNS解析, Docker, Docker Compose, GitHub Codespaces, KVM, NAS, Synology DSM, Web管理, 云计算, 云部署, 企业存储, 子域名突变, 存储虚拟化, 存储解决方案, 安全防御评估, 家庭服务器, 容器技术, 容器编排, 开源项目, 数据管理, 生成式AI安全, 磁盘管理, 系统管理, 网络存储, 虚拟化, 虚拟机, 规则引擎, 请求拦截