打造自己的Virtual DSM:在Docker中体验Synology的强大功能

你是否曾想过在自己的硬件上体验SynologyVirtual DSM,但不想购买他们的硬件?那么,你来对地方了。在这篇文章中,我们将介绍如何在Docker容器中运行Virtual DSM,让你能够在自己的计算机上享受Synology DSM的众多功能,而无需购买他们的NAS硬件。

开篇故事

想象一下,你在寻找一种方法来备份家庭照片和视频,或者建立一个私人云来存储重要文件。你听说过Synology的强大NAS设备,但你不想花大笔资金购买一台。然后,你听说有人将Virtual DSM安装在Docker容器中,并且一切都运行得非常出色。你兴奋地开始探索这个想法,想知道如何在自己的计算机上实现这一目标。

好消息是,你来对地方了。在接下来的教程中,我们将逐步向你展示如何在Docker中运行Virtual DSM,并让你享受Synology DSM的全部功能。

准备工作

在开始之前,你需要满足一些要求:

  • 一台装有Docker的计算机。
  • 安装了docker-compose(如果你使用docker-compose)。
  • 能够运行KVM的硬件,并且已启用KVM虚拟化支持。

安装Virtual DSM

通过docker-compose.yml安装

首先,你可以通过创建一个docker-compose.yml文件来配置Virtual DSM容器。这个文件将告诉Docker如何运行容器以及如何配置它。

version: "3"
services:
    dsm:
        container_name: dsm
        image: kroese/virtual-dsm:latest
        environment:
            DISK_SIZE: "16G"
        devices:
            - /dev/kvm
            - /dev/vhost-net
        cap_add:
            - NET_ADMIN                       
        ports:
            - 5000:5000
        volumes:
            - /opt/dsm:/storage
        restart: on-failure
        stop_grace_period: 1m

这个docker-compose.yml文件的关键部分包括:

  • image:容器使用的Virtual DSM Docker镜像。
  • environment:可以设置的环境变量,例如磁盘大小(默认为16GB,你可以根据需要进行修改)。
  • devices:指定了容器可以访问的设备,包括KVM支持。
  • ports:将容器内的端口映射到主机的端口(例如,将容器的5000端口映射到主机的5000端口)。
  • volumes:将主机文件夹挂载到容器内,以便在容器中存储数据。
  • restart:设置容器在故障时自动重启。
  • stop_grace_period:定义了容器在关闭之前等待的时间。

一旦你创建了docker-compose.yml文件,只需在包含该文件的目录中运行以下命令来启动Virtual DSM容器:

docker-compose up -d

通过docker run安装

如果你不使用docker-compose,也可以通过以下命令手动运行Virtual DSM容器:

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

这个命令将以交互式模式启动容器,同时映射端口并配置KVM支持。

配置Virtual DSM

一旦容器运行,你可以通过浏览器访问 http://localhost:5000 来配置Virtual DSM。你将看到Synology DSM的初始设置页面,类似于在Synology硬件上的设置过程。

你可以使用默认的管理员用户名和密码进行登录(通常是admin / admin)。登录后,你可以根据需要配置和使用Virtual DSM的各种功能,包括文件共享、备份、媒体服务器等。

常见问题解答

以下是一些常见问题的解答,以帮助你更好地配置和使用Virtual DSM。

如何更改虚拟磁盘的大小?

要扩展默认大小(16GB),只需在docker-compose.yml文件中找到DISK_SIZE设置并将其修改为所需的容量:

environment:
    DISK_SIZE: "256G"

这也可以用于在不丢失数据的情况下将现有磁盘的大小增加到更大的容量。

如何更改虚拟磁盘的位置?

要更改虚拟磁盘的位置,可以在docker-compose.yml文件中包含以下绑定挂载:

volumes:
    - /home/user/data:/storage

将示例路径/home/user/data替换为所需的存储文件夹。

如何更改虚拟磁盘的空间保留方式?

默认情况下,磁盘空间会提前保留。要创建一个只保留实际使用空间的可扩展磁盘,请添加以下环境变量:

environment:
    ALLOCATE: "N"

请注意,这不会影响任何现有磁盘,它只适用于新创建的磁盘。

如何增加CPU或RAM的分配?

默认情况下,容器分配了一个核心和512MB的RAM。要增加这些资源,添加以下环境变量:

environment:
    CPU_CORES: "4"
    RAM_SIZE: "2048M"

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

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

sudo apt install cpu-checker
sudo kvm-ok

如果kvm-ok返回错误,表示无法使用KVM加速,请检查你的BIOS设置。

如何为容器分配独立的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-compose.yml文件更改如下:

services:
    dsm:
        container_name: dsm
        ..
        networks:
            vdsm:             
                ipv4_address: 192.168.0.100

networks:
    vdsm:
        external: true

这种方法的额外好处是,你不再需要执行任何端口映射,因为所有端口都将默认公开。

请注意,由于macvlan的设计不允许两者之间的通信,因此来自Docker主机的IP地址将无法访问这个容器。如果这是一个问题,你需要创建第二个macvlan作为解决方法。

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

在配置容器为macvlan(如上所述)后,DSM可以通过从你的路由器请求IP来成为你家庭网络的一部分,就像其他设备一样。

要启用这个功能,请将以下行添加到你的docker-compose.yml文件中:

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

请注意,即使你不需要DHCP,也建议启用此功能,因为它可以防止NAT问题,并通过使用macvtap接口来提高性能。

如何安装特定版本的vDSM?

默认情况下,将安装7.2版本,但如果你喜欢较旧的版本,可以将其URL添加到你的docker-compose.yml文件中,如下所示:

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

使用这种方法,你可以在保留文件数据的同时在不同版本之间切换。

与标准DSM相比有什么区别?

与标准DSM相比,只有两个小的区别:不提供Virtual Machine Manager软件包,Surveillance Station不包含任何免费许可证。

这个项目是否合法?

是的,这个项目只包含开源代码,不分发任何受版权保护的材料。它也没有试图绕过任何版权保护措施。因此,在所有适用的法律下,这个项目都被认为是合法的。

然而,通过安装Synology的Virtual DSM,你必须接受他们的最终用户许可协议,该协议不允许在非Synology硬件上安装。因此,请只在官方Synology NAS上运行这个项目,因为任何其他用途都将违反他们的条款和条件。

结论

现在,你已经知道了如何在Docker容器中运行Virtual DSM,并且可以自己在计算机上体验Synology DSM的强大功能。无论你是想创建私人云、媒体服务器还是备份解决方案,Virtual DSM都为你提供了一个灵活且成本效益的选择。

请记住,Synology的Virtual DSM仍然受其最终用户许可协议的约束,因此只能在官方Synology硬件上合法使用。希望这篇文章对你有所帮助,让你更好地理解如何配置和使用Virtual DSM。

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:打造自己的Virtual DSM:在Docker中体验Synology的强大功能

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年9月17日 下午10:56
下一篇 2023年9月17日

相关推荐

  • 在Openvswitch + Docker环境下让容器获取上级路由分发的IPv6地址

    在Openvswitch + Docker方案中,容器通常处于一个虚拟网络中,而上级路由(例如Openwrt)可能会通过SLAAC(Stateless Address Autoconfiguration)协议为网络中的设备分配IPv6地址。但是,由于网络隔离和Docker容器…

    2024年3月17日
    00
  • 在 Windows Server 2019 上安装 Docker

    在 Windows Server 2019 上安装 Docker 下载 Docker 安装程序 首先,您需要从 Docker 官方网站下载适用于 Windows Server 2019 的 Docker 安装程序。访问 Docker 官方网站 并下载适用于 Windows 的 Docker 安装程序…

    2024年3月17日
    00
  • 在单个Mariadb容器中使用Docker Compose创建多个数据库

    在开发和测试过程中,有时我们希望在单个Mariadb容器中创建多个数据库,而不必编写SQL脚本手动创建。Docker Compose提供了一种简单方便的方式来定义和管理多个容器,我们可以利用它来实现这个需求。 使用Docker Com…

    2024年3月17日
    00
  • 用 Docker 搭建 CS:GO 128 Tick 服务器:一步步教你

    回想起那些熬夜打游戏的日子,是否仍感到心潮澎湃?《反恐精英:全球攻势》(CS:GO)作为最受欢迎的射击游戏之一,一直是电子竞技的热门选择。随着技术的进步,玩家对游戏体验的要求越来越高,128 tick 的服务器成…

    2023年12月28日
    00
  • 在Docker容器内部如何ping通宿主机IP?

    在Docker容器内部访问宿主机IP通常会遇到网络隔离的问题。因为Docker容器默认是在一个虚拟网络中运行的,与宿主机有自己的网络命名空间,无法直接访问宿主机的IP地址。但是有时候,我们需要在容器内部访问宿主机的…

    2024年3月17日
    00
  • WordPress跨服务器迁移到Docker教程

    在开始迁移WordPress之前,确保您已经安装并配置好了Docker和WordPress的基本环境。另外,您需要了解源服务器和目标服务器的基本信息,例如IP地址、用户名和密码等。 迁移步骤 1. 备份WordPress数据 在源服务器上,…

    2024年3月17日
    00
  • BT面板+Docker+Alist打造个人网盘

    在数字化时代,个人网盘成为了越来越多人的需求。有了个人网盘,你可以方便地存储、管理和共享文件,而无需依赖第三方云服务。本教程将教你如何使用宝塔面板、Docker和Alist来打造自己的个人网盘,代替传统云存储服…

    2022年10月29日
    00
  • 用 CompreFace 轻松实现人脸识别:无需机器学习技能

    你是否曾想过在你的应用或系统中添加人脸识别功能,但又担心需要复杂的机器学习技能?不用担心,Exadel CompreFace 是一款领先的免费开源人脸识别系统,可以轻松集成到任何系统中,无需先修的机器学习技能。 开篇故…

    2023年9月21日
    00
  • Docker部署Alist网盘

    Alist是一个强大的云笔记工具,它可以帮助你轻松管理和组织个人和团队的笔记。如果你想在本地测试环境或本地NAS上部署Alist,或者在云服务器上进行部署,本文将为你提供两种不同的方法。使用Docker,你可以实现干净…

    2022年11月25日
    00
  • 安装Docker并运行容器:让WSL与Docker完美结合

    在计算机科学的世界里,有一个神奇的工具,它可以帮助开发者轻松地构建、发布和运行应用程序,而无需担心各种复杂的环境配置和依赖关系。这个工具就是Docker。在本教程中,我们将探讨如何在Windows Subsystem for L…

    2023年9月19日
    00