群晖 DSM7 的 Docker 与 IPv6 

2023-03-22 17:08:31 39点赞 392收藏 23评论

背景介绍

随着 IPv6 的普及如今家用宽带基本上都是自带外网的 IPv6 资源的。IPv6 资源分发到每个家里可以理解是一个资源池,哪怕光猫下面连接路由器,路由器下面再接一些设备,也可以保证这些设备也获取到独立的公网 IPv6 地址。那么该如何充分利用这些 IPv6 资源呢?下面国光就简单介绍一下如何让群晖的 Docker 充分利用 IPv6 资源。

抛出问题

Docker 自带的 bridge 网桥默认是不支持 IPv6 的:

群晖 DSM7 的 Docker 与 IPv6 

这就导致了我们下图传统方法通过 bridge 映射的 8443 和 8080 端口无法被 IPv6 网络访问,只能走 IPv4 网络:

群晖 DSM7 的 Docker 与 IPv6 

从 DSM7 开始群晖官方也不建议我们去修改 Docker 的配置文件,而且考虑到 IPv6 的地址可能会发生变化,我们如果直接去编辑 Docker 配置文件,强开 IPv6 的话也并不是一个很优雅的方式。这里其实我们除了使用 host 网络类型,其实我们还有别的选择,就是自带的 Web Station 套件。

群晖 DSM7 的 Docker 与 IPv6 

  • Host 网络类型:简单方便,但不能灵活设置端口

  • Web Station 套件:有点繁琐,但可灵活设置映射到宿主机的端口

下面国光来就来分别以实际简单演示一下这两张让 Docker 获取 IPv6 的方法在群晖系统中的实际应用。

系统介绍

下面就实战演示一下,如果使用群晖 NAS 搭建一些常用的系统,并配置 IPv6 网络正常访问。先来看看我们接下来要部署哪些系统吧:

群晖 DSM7 的 Docker 与 IPv6 

这些是我的 NAS 目前安装的系统,个人觉得这些系统 NAS 上通过 Docker 部署还是很方便的,当然还有其他不错的服务也可以 Docker 部署,下面就不一一列举了:

  1. jeessy/ddns-go简单方便的动态解析工具,支持多个系统平台和多个云厂商

  2. talebook/talebook基于 Calibre 魔改的简约美观的个人图书管理系统

  3. xhofe/alist支持接管管理各大网盘的系统

ddns-go - 动态解析

ddns-go 默认的端口为 9876 端口,不会占用群晖 NAS 的 80 端口,而且 Linux 下的 Docker 也支持 host 类型的网络模式,ddns-go 官方也建议我们使用 Docker 来部署搭建:

docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go

默认大家都是有 Docker 基础的,国光简单解释一下几个参数的作用:

--restart=always:表示随 Docker 服务启动就开启自启这容器

--net=host :表示使用 host 网络,即和主机共享 IP,这样就可以获取到公网的 IPv6 地址

考虑到我的个人情况,国光将群晖本地的 /volume5/docker/ddns-go 文件夹挂载到 ddns-go 容器的 /root 目录下:

群晖 DSM7 的 Docker 与 IPv6 

ddns-go 的使用非常简单,首先填写我们域名厂商的 AK 和 SK 即可:

群晖 DSM7 的 Docker 与 IPv6 

因为国光的家庭带宽无公网的 IPv4,所以这里只开启 IPv6 地址:

  • 一般来说通过网卡获取的 IPv6 地址要准确一点

  • Domains 直接填写我们想要解析的 IPv6 地址即可,DDNS-GO 会自动带着我们的 AK 和 SK 去控制台帮我们添加解析记录

群晖 DSM7 的 Docker 与 IPv6 

至此我们的操作就完成了,从 ddns-go 系统网页右侧也可以看到解析日志的一些细节:

群晖 DSM7 的 Docker 与 IPv6 

然后我们就可以使用我们 ddns-go 解析配置的域名直接访问我们的群晖 NAS 系统了:

群晖 DSM7 的 Docker 与 IPv6 

talebook - 图书管理

因为 talebook 默认的也是 80 端口,所以我们不能直接使用 host 网络类型直接部署了,如果我们使用传统 -p 桥接类的话:

-p <本机端口>:80

这样就会导致我们的容器无法使用 IPv6,只可以通过 IPv4 访问,这样就减少了很多便利性。所以接下来我们需要 Web Station 套件出场了。

首先选择 bridge 网络类型:

群晖 DSM7 的 Docker 与 IPv6 

接着重点来了,这里选择「通过 Web Station 启动网页门户」,然后我们根据镜像开的端口数目,自己添加对应的端口,这里的 80 是容器本身预设的端口:

群晖 DSM7 的 Docker 与 IPv6 

为了不用每次重启服务都要手动启动容器,我们这里还勾选了「启用自动重新启动」 。从下一步可以看出来我们的 80 端口会被b本地的 Web Station 进行管理:

群晖 DSM7 的 Docker 与 IPv6 

根据 talebook 官方说明,我们添加一个本地的文件映射到容器的 /data 目录下:

群晖 DSM7 的 Docker 与 IPv6 

接着会引导我们到 Web Station 继续配置端口:

群晖 DSM7 的 Docker 与 IPv6 

选择「基于端口」的门户类型,然后将容器的 80 端口绑定到 NAS 的 8080 端口:

群晖 DSM7 的 Docker 与 IPv6 

继续添加新的端口效果如下:

群晖 DSM7 的 Docker 与 IPv6 

我们就可以使用上一小节的 DDNS IPv6 域名直接访问安装我们的 tablebook 图书管理系统了:

群晖 DSM7 的 Docker 与 IPv6 

接来来追求完美我们新增 1 个 book 子域名,使用 DDNS IPv6 动态解析:

群晖 DSM7 的 Docker 与 IPv6 

这样也可以使用 book 这个子域名来访问我们的图书管理系统:

群晖 DSM7 的 Docker 与 IPv6 

alist - 网盘接管

同理其他系统搭建也是换汤不换药,国光我就不在啰里八嗦从盘古开天辟地开始讲了,下面只讲一下 alist 服务的关键操作。

还是通过「Web Station」来接管容器的 Web 端口:

群晖 DSM7 的 Docker 与 IPv6 

然后根据官方文档,在高级设置配置变量:

群晖 DSM7 的 Docker 与 IPv6 

添加共享文件夹映射到容器的 /opt/alist/data 目录:

群晖 DSM7 的 Docker 与 IPv6 

第一次启动可以在日志里面查看默认密码:

群晖 DSM7 的 Docker 与 IPv6 

然后就可以愉快的通过 IPv6 的 DDNS 使用 alist 啦:

群晖 DSM7 的 Docker 与 IPv6 

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
23评论

  • 精彩
  • 最新
  • 没看懂,如果只是为了获取公网ipv6,那么创建docker macvlan 类型网络,并启用对应的ipv6前缀,docker 通过macvlan,就可以获得ipv6

    校验提示文案

    提交
    正解,如果是在docker中macvlan或者ipvlan才是更好更通用的获取ipv6的方式。如果在群晖上不通过ssh的话,这个方法算是一个不敲代码就能实现的路子。

    校验提示文案

    提交
    其实直接使用host也可以的

    校验提示文案

    提交
    收起所有回复
  • 群晖不是自带Nginx嘛,直接在Nginx设置反向代理不就行了嘛。通过监听做了ddns域名的不同端口,然后再转发到本地的docker映射到主机的端口就行了,实测没有问题,感觉这样比较省事

    校验提示文案

    提交
  • 看不懂,二级域名怎么弄?

    校验提示文案

    提交
    同问二级域名怎么映射到端口的?!

    校验提示文案

    提交
    收起所有回复
  • 之前弄了好几个bridge的docker,默认是分配不到v6,用群晖的反向代理换个端口号又支持v6了,缺点就是会占用两个端口号

    校验提示文案

    提交
  • 还有种思路,pt下载器这些用host模式,其他的bridge模式,然后反代就行

    校验提示文案

    提交
  • 这不就是反代?

    校验提示文案

    提交
  • 给docker打开ipv6就行,docker官方有教程

    校验提示文案

    提交
  • 公司没IPV6,,访问家里IPV6的NAS有点麻烦 [皱眉]

    校验提示文案

    提交
    [邪恶] 我之前也是每次都要用手机后来从人事那里骗来了路由器密码

    校验提示文案

    提交
    teamviewer挺好用的

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • [皱眉] 图省事可以新建docker的时候选下面那个host相同网络,是通ipv6的。缺点就是不能自定义端口可能出现docker端口占用,适合套件docker少的人,但是webstation下来也要占几个端口

    校验提示文案

    提交
  • 这个webstation是不是就是nginx?

    校验提示文案

    提交
  • 没想到国光大佬还有张大妈账号 [惊喜]

    校验提示文案

    提交
  • 总是查询注册表失败,是怎么回事?

    校验提示文案

    提交
  • 系统自带的ipv6就能用啊,关键外面很多地方网络没有ipv6访问不到,

    校验提示文案

    提交
  • 这是个端口转发,哪里有获取ipv6 如果容器是qb

    校验提示文案

    提交
  • 学习了

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
392
扫一下,分享更方便,购买更轻松