文章目录
项目名称: virtual-dsm
基础条件
- Docker & Docker compose
- 开启虚拟化
- 需要支持kvm
/dev/kvm驱动支持,底层会调用kvm,如果不使用kvm加速cpu负载会高
- Linux < 5.3
- 推荐Ubuntu
virtual镜像实际上底层会调用kvm驱动,纯云服务器可能不支持!
温馨提示: 群晖DSM上可以在嵌套virtual-dsm
要验证您的系统是否支持 KVM,请运行以下命令:
sudo apt install cpu-checker
sudo kvm-ok
如果有错误消息,kvm-ok指示无法使用 KVM 加速,请检查您的 BIOS 设置。
安装virtual-dsm
docker compose启动文件
cat >>docker-compose.yml<<EOF
version: "3"
services:
dsm:
container_name: dsm
image: kroese/virtual-dsm:latest
environment:
DISK_SIZE: "20G" #磁盘大小(最小16g)
ALLOCATE: "N"
CPU_CORES: "4"
RAM_SIZE: "2048M"
devices:
- /dev/kvm
cap_add:
- NET_ADMIN
ports:
- 5000:5000
volumes:
- /opt/dsm:/storage
restart: on-failure
stop_grace_period: 1m
EOF
root@abcdocker:~# docker compose up -d
#创建成功
[+] Running 7/7
✔ dsm 6 layers [⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 17.1s
✔ 5b5fe70539cd Pull complete 10.5s
✔ f9ac7e0c24db Pull complete 12.8s
✔ e9cfd4b1bfb4 Pull complete 12.9s
✔ 04a8f1356af9 Pull complete 12.9s
✔ ce474df379bd Pull complete 13.0s
✔ 51abe57c89c6 Pull complete 13.0s
[+] Building 0.0s (0/0)
[+] Running 2/2
✔ Network root_default Created 0.1s
✔ Container dsm Started
创建时等待时间会比较长,可以耐心等待一会
接下来我们可以查看到名称为dsm的容器
[root@tmp-01 dsm]# docker compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------
dsm /run/run.sh Up 139/tcp, 22/tcp, 445/tcp, 0.0.0.0:5000->5000/tcp,:::5000->5000/tcp, 80/tcp
通过Docker容器可以看到详细的信息
[root@tmp-01 dsm]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS S
12141b8bdfda kroese/virtual-dsm:latest "/run/run.sh" 3 minutes ago Up About a minute (health: starting) 22/tcp, 80/tcp, 139/tcp, 445/tcp, 0.0.0.0:5000->5m
[root@tmp-01 dsm]# docker logs -f dsm
docker日志会先下载相关的依赖包
[root@tmp-01 dsm]# docker logs -f dsm
❯ Starting Virtual DSM for Docker v4.08...
❯ Install: Downloading installer...
❯ Install: Downloading DSM_VirtualDSM_64570.pat...
0K ........ ........ ........ ........ 8% 5.34M 61s
32768K ........ ........ ........ ........ 17% 9.09M 44s
65536K ........ ........ ........ ........ 26% 9.01M 36s
98304K ........ ........ ........ ........ 35% 8.27M 30s
131072K ........ ........ ........ ........ 44% 7.28M 26s
163840K ........ ........ ........ ........ 53% 8.29M 22s
196608K ........ ........ ........ ........ 62% 8.11M 17s
229376K ........ ........ ........ ........ 71% 9.70M 13s
262144K ........ ........ ........ ........ 80% 8.60M 9s
294912K ........ ........ ........ ........ 89% 7.24M 5s
327680K ........ ........ ........ ........ 98% 8.19M 1s
360448K ..... 100% 6.86M=45s
❯ Install: Extracting downloaded image...
❯ Install: Extracting system partition...
❯ Install: Installing system partition...
Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.
char device redirected to /dev/pts/0 (label charserial0)
中间启动安装速度比较慢,根据网络影响,耐心等待,急时查看docker dsm容器日志
当结束后,日志输出以下
❯ Started VirtualDSM Agent v7...
Thu Jun 29 21:26:25 2023
VirtualDSM login:
❯ --------------------------------------------------------
❯ You can now login to DSM at port 5000
❯ --------------------------------------------------------
^C
root@abcdocker:~# docker logs -f 5f71ad234269
可以先用命令curl 一下状态,来判断容器网络是否正常
root@abcdocker:~# curl localhost:5000 -I
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 30 Jun 2023 04:56:21 GMT
Content-Type: text/html; charset="UTF-8"
Connection: keep-alive
Keep-Alive: timeout=20
Vary: Accept-Encoding
Cache-control: no-store
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Content-Security-Policy: base-uri 'self'; connect-src data: ws: wss: http: https:; default-src 'self' 'unsafe-eval' data: blob: https://*.synology.com https://www;
配置参数说明
容器镜像相关参数
container_name: dsm #容器名称
image: kroese/virtual-dsm:latest #镜像版本
devices:
- /dev/kvm #/dev/kvm为支持kvm驱动
cap_add:
- NET_ADMIN
ports:
- 5000:5000 #端口映射
volumes:
- /opt/dsm:/storage #磁盘挂载点
restart: on-failure #容器退出后一直重启
stop_grace_period: 1m
群晖参数
environment:
DISK_SIZE: "20G" #磁盘大小(最小16g,可以动态缩容扩容)
ALLOCATE: "N" #按需占用磁盘,而不是一次性占用20G
CPU_CORES: "4" #CPU核心数,可以指定容器的cpu数量
RAM_SIZE: "2048M" #群晖内存
URL: "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_VirtualDSM_42218.pat" #默认情况下,将安装 7.2 版本,但如果您更喜欢旧版本,可以将其 URL 添加到您的撰写文件中
访问测试
访问 Docker ip:5000 端口
动态扩容磁盘
如果我们想扩容磁盘,可以步骤如下,支持动态扩容
需要删除容器在创建,直接修改不生效
- 一、#编辑docker-compose文件
environment:
DISK_SIZE: "30G" #这个随便写根据你硬盘大小判断
- 二、重建docker dsm容器
简单说下步骤,就是删除docker dsm容器,在重新创建。数据已经持久化在/opt/dsm,只要硬盘够,可以无限调整
root@abcdocker:~# docker compose stop
[+] Stopping 1/1
✔ Container dsm Stopped
root@abcdocker:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5f71ad234269 kroese/virtual-dsm:latest "/run/run.sh" 30 minutes ago Exited (143) 20 seconds ago dsm
root@abcdocker:~# docker rm dsm
dsm
root@abcdocker:~# docker compose up -d
[+] Building 0.0s (0/0)
[+] Running 1/1
✔ Container dsm Started
- 三、访问测试
扩容前
扩容后
本地磁盘
root@abcdocker:~# ls -lh /opt/dsm/
total 4.1G
-rw-r--r-- 1 root root 30G Jun 30 05:01 data.img #实际上就是动态调整img文件
-rw-r--r-- 1 root root 5.2M Jun 30 04:24 dsm.rd
-rw-r--r-- 1 root root 21 Jun 30 04:25 dsm.ver
-rw-r--r-- 1 root root 2 Jun 30 04:25 DSM_VirtualDSM_64570.agent
-rw-r--r-- 1 root root 110M Jun 30 04:56 DSM_VirtualDSM_64570.boot.img
-rw-r--r-- 1 root root 358M Jun 15 10:46 DSM_VirtualDSM_64570.pat
-rw-r--r-- 1 root root 4.7G Jun 30 05:01 DSM_VirtualDSM_64570.system.img
与标准 DSM 相比有何差异?
只有两个细微差别:不提供 Virtual Machine Manager 软件包,并且 Surveillance Station 不包含任何免费许可证。
这个项目合法吗?
是的,该项目仅包含开源代码,不分发任何受版权保护的材料。它也不试图规避任何版权保护措施。因此,根据所有适用的法律,该项目将被视为合法。
但是,通过安装 Synology 的 Virtual DSM,您必须接受其最终用户许可协议,该协议不允许在非 Synology 硬件上安装。因此,只能通过 Container Manager 软件包在官方 Synology NAS 上运行此项目,因为任何其他使用都将违反其条款和条件。
免责声明
仅在 Synology 硬件上运行此容器,其 EULA 不允许任何其他用途。本项目中提及的产品名称、徽标、品牌和其他商标均为其各自商标所有者的财产。此项目并非由 Synology, Inc. 附属、赞助或认可。