Docker安装黑群晖virtual-dsm

虚拟 DSM

Docker安装黑群晖virtual-dsm插图

Docker 容器中的虚拟 DSM。

特点✨
  • 多个磁盘
  • KVM加速
  • 支持升级
用法🐳

通过 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
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
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 CLI:

docker run -it --rm -p 5000:5000 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 vdsm/virtual-dsm
docker run -it --rm -p 5000:5000 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 vdsm/virtual-dsm
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
kubectl apply -f kubernetes.yml
kubectl apply -f kubernetes.yml

常见问题解答💬
我如何使用它?

非常简单!步骤如下:

  • 启动容器并使用您的 Web 浏览器连接到端口5000

  • 等到 DSM 准备就绪,选择用户名和密码,然后您将进入桌面。

享受您的全新机器,并且不要忘记为这个 repo 加星标!

如何更改存储位置?

要更改存储位置,请在撰写文件中包括以下绑定挂载:

volumes: - /var/dsm:/storage
volumes: - /var/dsm:/storage
volumes: - /var/dsm:/storage

将示例路径替换/var/dsm为所需的存储文件夹。

如何更改磁盘大小?

要扩展 16 GB 的默认大小,请找到DISK_SIZE撰写文件中的设置并将其修改为您喜欢的容量:

environment: DISK_SIZE: "128G"
environment: DISK_SIZE: "128G"
environment: DISK_SIZE: "128G"

提示

这也可以用于将现有磁盘调整为更大的容量而不会丢失任何数据。

如何创建可扩展的磁盘?

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

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

environment: DISK_FMT: "qcow2"
environment: DISK_FMT: "qcow2"
environment: DISK_FMT: "qcow2"

笔记

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

如何添加多个磁盘?

要创建其他磁盘,请像这样修改您的组合文件:

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

如何直通磁盘?

可以通过以下方式将磁盘设备添加到撰写文件中,从而直接传递磁盘设备:

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

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

重要的

该设备需要完全空(没有任何分区表),否则 DSM 并不总是将其格式化为卷。

警告

请勿使用此功能来从主机共享文件,当 DSM 创建卷时,所有文件都将毫无警告地丢失。

如何更改 CPU 或 RAM 的数量?

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

如果您想调整这个,您可以使用以下环境变量指定所需的数量:

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

如何验证我的系统是否支持 KVM?

要验证您的系统是否支持 KVM,请运行以下命令:

sudo apt install cpu-checker sudo kvm-ok
sudo apt install cpu-checker sudo kvm-ok
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缺少内容,则将其添加privileged: true到您的撰写文件(或--privileged您的run命令)中可能会有所帮助,以排除任何权限问题。

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

请务必修改这些值以匹配您的本地子网。

创建网络后,将撰写文件更改为如下所示:

services: dsm: container_name: dsm ..<snip>.. networks: vdsm: ipv4_address: 192.168.0.100 networks: vdsm: external: true
services: dsm: container_name: dsm ..<snip>.. networks: vdsm: ipv4_address: 192.168.0.100 networks: vdsm: external: true
services: dsm: container_name: dsm ..<snip>.. networks: vdsm: ipv4_address: 192.168.0.100 networks: vdsm: external: true

这种方法的另一个好处是您不再需要执行任何端口映射,因为所有端口都会默认公开。

重要的

由于 macvlan 的设计不允许 Docker 主机与主机之间进行通信,因此无法从 Docker 主机访问此 IP 地址。如果担心此问题,您需要创建 [第二个 macvlan](https://blog.oddbit.com/post/2018-03-12-using-docker-macvlan-networks/#host-access) 作为解决方法。

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

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

要启用此模式,请将以下行添加到您的撰写文件中:

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

笔记

在这种模式下,容器和 DSM 将各自拥有单独的 IP。

我如何直通 GPU?

要直通您的 Intel GPU,请将以下几行添加到您的撰写文件中:

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

提示

例如,这可用于启用 Synology Photos 中的面部识别功能。

如何安装特定版本的 vDSM?

默认情况下,将安装版本 7.2,但如果您更喜欢旧版本,则可以将其下载 URL 添加到您的撰写文件中,如下所示:

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

通过这种方法,甚至可以在不同版本之间切换,同时保持所有文件数据的完整性。

如果您无法访问互联网,也可以通过将 URL 设置为以下内容来跳过下载:

environment: URL: "DSM_VirtualDSM_42218.pat"
environment: URL: "DSM_VirtualDSM_42218.pat"
environment: URL: "DSM_VirtualDSM_42218.pat"

DSM_VirtualDSM_42218.pat在您的文件夹中放置一个名为的文件后/storage

原文链接:https://blog.csdn.net/qq_20372919/article/details/140663441?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522b67dfbe30d82be19e5b7f92847a0c907%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=b67dfbe30d82be19e5b7f92847a0c907&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-6-140663441-null-null.nonecase&utm_term=%E9%BB%91%E7%BE%A4%E6%99%96%E9%95%9C%E5%83%8F

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享