首页 Docker导航 Virtual DSM

Virtual DSM

在Docker容器中部署群晖DSM
2025-06-15 04:37
中文
152 人使用
相关文章
飞牛OS使用Docker安装群晖部署DSM系统:3分钟玩转黑群NAS

在Docker容器中的虚拟DSM。

功能

多个磁盘

KVM加速

支持升级

使用方法

常见问题解答

如何使用?

非常简单!步骤如下:

启动容器并用浏览器访问 端口5000

等待DSM准备就绪,设置用户名和密码,然后会被带到桌面界面。

尽情享受你的新设备,别忘了给这个仓库点赞!

如何更改存储位置?

要更改存储位置,在你的compose文件中添加以下绑定挂载:

  volumes:
    - /var/dsm:/storage

将示例路径/var/dsm替换为你想要的存储目录。

如何改变磁盘大小?

要扩展默认的16GB大小,找到你的compose文件中的DISK_SIZE设置,并将其修改为所需的容量:

  environment:
    DISK_SIZE: "128G"

提示: 这也可以用来无数据丢失地扩大现有磁盘的容量。

如何创建可扩展的磁盘?

默认情况下,磁盘的全部容量会预先保留。

要创建只分配实际使用的空间的可扩展磁盘,添加以下环境变量:

  environment:
    DISK_FMT: "qcow2"

注意: 这可能会降低磁盘的写入性能。

如何添加多个磁盘?

创建额外的磁盘,修改你的compose文件如下所示:

  environment:
    DISK2_SIZE: "32G"
    DISK3_SIZE: "64G"
  volumes:
    - /home/example:/storage2
    - /mnt/data/example:/storage3

如何传递一个磁盘?

可以通过以下方式直接在compose文件中传递磁盘设备:

devices:
    - /dev/disk/by-uuid/12345-12345-12345-12345-12345:/disk2

确保通过UUID(可通过lsblk -o name,uuid获取)而不是名称(如/dev/sdc)来绑定磁盘,以防驱动器字母发生改变时绑定错误的磁盘。

重要提示: 设备需要为空(没有分区表),否则DSM不总是能将其格式化为卷。

警告: 不要用此功能来共享主机上的文件,当DSM创建卷时,所有文件会不带警告地丢失。

如何调整CPU或内存的数量?

默认情况下,容器可以使用最多1个CPU核心和1GB的RAM。

如果要调整这个值,你可以使用以下环境变量指定所需数量:

  environment:
    RAM_SIZE: "4G"
    CPU_CORES: "4"

如何检查我的系统是否支持KVM?

要检查系统是否支持KVM,运行以下命令:

  sudo apt install cpu-checker
  sudo kvm-ok

如果kvm-ok返回错误,说明不能使用KVM加速,请检查:

是否在BIOS中启用了虚拟化扩展(Intel VT-x 或 AMD SVM)。

你正在运行的是支持它们的操作系统,如Linux或Windows 11(不幸的是,macOS和Windows 10不支持)。

如果你在虚拟机里运行容器,已启用“嵌套虚拟化”。

如果你不使用云提供商,因为大多数云提供商不允许其VPS使用嵌套虚拟化。

如果kvm-ok没有任何错误,但容器仍然抱怨缺少/dev/kvm,可能需要在compose文件中添加privileged: true(或在run命令中添加--privileged),以排除权限问题。

如何给容器分配独立的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

这种方法的一个好处是,你不再需要做端口映射,因为所有端口默认都是暴露的。

重要提示: 由于macvlan设计的原因,这个IP地址无法从Docker主机访问。如果你关心这个问题,需要创建 第二个macvlan 作为变通办法。

如何让DSM从我的路由器获取IP地址?

配置容器使用 macvlan 后,DSM可以像其他设备一样成为家庭网络的一部分,向你的路由器请求IP地址。

要启用此模式,在你的compose文件中添加以下行:

  environment:
    DHCP: "Y"
  devices:
    - /dev/vhost-net
  device_cgroup_rules:
    - 'c *:* rwm'

注意: 在这种模式下,容器和DSM各自会有自己的独立IP地址。

如何传递GPU?

要传递你的Intel GPU,在你的compose文件中添加以下行:

  environment:
    GPU: "Y"
  devices:
    - /dev/dri

提示: 可以用于启用Synology Photos中的面部识别等功能。

如何安装特定版本的vDSM?

默认安装7.2版本,但如果你想使用旧版本,可以在compose文件中添加下载URL如下:

  environment:
    URL: "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_VirtualDSM_42218.pat"

这样,甚至可以在保持所有文件数据不变的情况下切换不同版本。

如果没有互联网连接,也可以通过将URL设置为:

  environment:
    URL: "DSM_VirtualDSM_42218.pat"

之后在你的/storage目录中放置一个名为DSM_VirtualDSM_42218.pat的文件来跳过下载过程。

与标准DSM相比有什么不同?

仅有两个细微差别:一是虚拟机管理器包不可用;二是Surveillance Station不包含免费许可。

这个项目合法吗?

是的,本项目仅包含开源代码,并不分发任何受版权保护的材料,也未尝试规避任何版权保护措施。因此,根据所有适用法律,这个项目被认为是合法的。

然而,安装Synology的虚拟DSM需接受其最终用户许可协议,该协议不允许在非Synology硬件上安装。因此,只能在官方Synology NAS上运行此容器,其他用途均违反了他们的使用条款和条件。

通过Docker Compose:

services:
  dsm:
    container_name: dsm
    image: vdsm/virtual-dsm
    environment:
      DISK_SIZE: "16G"
    devices:
      - /dev/kvm
    cap_add:
      - NET_ADMIN
    ports:
      - 5000:5000
    volumes:
      - /var/dsm:/storage
    stop_grace_period: 2m

通过Docker命令行:

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

通过Kubernetes:

kubectl apply -f kubernetes.yml