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

相关推荐

  • 用 CompreFace 轻松实现人脸识别:无需机器学习技能

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

    2023年9月21日
    00
  • 使用Docker在Windows上发送网络请求至宿主机

    教程:使用Docker在Windows上发送网络请求至宿主机 1. 简介 Docker在Windows上的使用已经变得非常普遍,但是有时候您可能需要从Docker容器中发送网络请求至宿主机。在本教程中,我将向您展示如何使用Docker容器内的…

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

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

    2023年12月28日
    00
  • Python项目的版本兼容性与依赖管理:解决困扰开发者的难题

    大家好,我是王大神。今天,我要和大家探讨两个在Python项目开发中经常令人困惑的问题:Python版本的兼容性和依赖管理。这两个问题可能让你在尝试运行Python项目时感到头痛,但我将为你提供解决方案和建议。 开篇故…

    2023年10月21日
    00
  • 安装 Docker 在 Ubuntu 最新版本上的步骤详解

    Docker 是一种强大的容器化平台,可以帮助开发者更轻松地构建、部署和管理应用程序。无论是在开发、测试还是生产环境中,Docker 都能提供高度一致的运行环境,从而减少了因环境差异而引发的问题。本教程将详细介绍…

    2023年11月14日
    00
  • Docker:一键部署青龙

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

    2023年1月16日
    00
  • 解决 Docker 容器启动 Nginx 配置文件打不开的问题

    在使用 Docker 启动 Nginx 容器时,有时会遇到配置文件无法打开的问题。本文将介绍可能导致这个问题的原因,并提供解决方法。 原因分析 1. 文件路径错误 可能是由于 Docker 容器中配置文件的路径设置不正确,导致 N…

    2024年3月17日
    00
  • 如何在NAS上部署Jellyfin媒体服务器

    想象一下,你正在周末晚上躺在沙发上,准备享受一部新电影或者追看你最喜欢的电视剧。你有一个强大的NAS(网络附加存储),里面存放着大量的音乐、视频和照片。现在,你可以将你的NAS变成一个功能强大的媒体中心,…

    2023年10月22日
    00
  • NAS用docker部署jellyfin教程

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

    2023年8月23日
    00
  • 解决Docker容器无法停止的问题

    在使用Docker时,有时会遇到容器无法停止的情况,这可能会给我们的工作和部署带来一些困扰。本教程将介绍如何解决Docker容器停止不了的问题,帮助您轻松应对这种情况。 1. 检查容器状态和日志 首先,我们需要检查容…

    2024年3月17日
    00