打造自己的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日

相关推荐

  • NAS用docker部署jellyfin教程

    曾经,我有一堆珍藏的音乐、视频和照片,它们散落在我的电脑、硬盘和各种存储设备中。每当我想要欣赏它们时,我得翻找不同的地方,有时还需要面对格式不兼容或者播放问题。然而,一天,我听说了一个名叫Jellyfin的…

    2023年8月23日
    00
  • 优化家庭服务器服务端口管理:让一切变得井然有序

    大家好,我是王大神!今天我将为你分享一些关于优化家庭服务器服务端口管理的技巧。如果你像我一样,家中有多个服务运行在不同的端口上,而且每次都要查找端口号,那么这篇文章将帮助你让一切变得井然有序,让管理…

    2023年9月22日
    00
  • 打造属于你的隐私搜索引擎:Searx-Docker项目深度解析

    当你每次在线搜索时,是否思考过背后的搜索引擎如何使用、保存甚至分享你的搜索记录?在当今数字时代,隐私保护已成为许多人关心的话题。但现实是,大多数流行的搜索引擎都会追踪用户的行为。那么,有没有办法自己…

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

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

    2024年3月17日
    00
  • 在Openvswitch + Docker环境下让容器获取上级路由分发的IPv6地址

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

    2024年3月17日
    00
  • Docker中使用Host模式为什么端口只能映射IPv6?

    Docker是一种流行的容器化平台,允许开发人员将应用程序及其依赖项打包到一个称为容器的轻量级、独立和可移植的单元中。其中一个常见的Docker网络模式是Host模式,它允许容器共享主机的网络命名空间。然而,使用Hos…

    2024年3月17日
    00
  • 优化你的Docker体验:选择适合你的Docker环境

    大家好,我是王大神,今天我们来聊聊一个广受程序员欢迎的话题:Docker。Docker是一个强大的容器化平台,让开发、测试和部署应用程序变得更加便捷。但是,对于在Windows环境下使用Docker的开发者来说,选择合适的Do…

    2023年9月23日
    00
  • C++代码中的条件变量和互斥锁问题解析

    引子:解决C++代码中的条件变量和互斥锁问题 在编写C++代码时,经常需要使用条件变量(std::condition_variable)和互斥锁(std::mutex)来实现多线程同步。然而,这两者在使用时需要谨慎,特别是在容器中存储它们…

    2023年10月12日
    00
  • 如何在2023年使用Docker在群晖上部署应用

    开篇故事 在数字化时代,我们越来越依赖于各种应用程序来提高工作效率、娱乐和解决问题。然而,管理这些应用程序并确保它们在不同环境中稳定运行可能会变得相当复杂。在这个过程中,Docker成为了一个不可或缺的工具…

    2023年10月12日
    00
  • Docker:一键部署青龙

    在如今的数字时代,许多人喜欢使用京东脚本来自动化京东购物和领取京豆等任务。然而,管理这些脚本可能会变得繁琐,因此我们需要一种简单且高效的方式来管理它们。Docker是一种流行的容器化技术,它可以帮助我们轻…

    2023年1月16日
    00