站点图标 krkr2(beta)

Docker的一些踩坑,ipv6设置

前言

前不久打电话要来了运营商给的ipv6地址,然后使用DDNS-GO解析到了域名上。

按理来说,我应该可以使用域名+端口的方式访问NAS上的服务,但是实际上却无法访问

问题排查

排查了一番之后,确定是docker的问题。

这是因为docker默认并没有开启ipv6的访问权限,在面板中可以到。

而且在网上查了一下,要给docker配置ipv6还是较为繁琐的。

而且公网ipv6是动态的,写进配置文件也不行。

但是在最后还是摸索出了两个解决方案

使用反向代理

使用群晖NAS自带反向代理。

控制面板→应用程序门户→反向代理服务器,新增一个服务,描述可以随便填。

来源

目的地

然后点击确认即可,随后你就可以通过域名加端口访问你对服务了。

不使用反向代理

反向代理就已经可以解决无法访问的问题,但考虑到有一些服务是不支持反向代理,比如MC服务器之类的,因此这个问题还不算完全解决。

虽然Docker显示”ipv6已禁用“,但是如果你的NAS可以正常获取ipv6地址的话。

那么代表Docker是可以正常使用ipv6的,也就是使用域名+端口直接访问服务。

但需要你把docker应用的网络模式改为”host“模式,这代表着与群晖公用一个网络环境。

比如:

虽然显示已禁用,但是可以通过域名+端口直接访问。

如果你是使用docker-compose,那么你只需要在配置文件上添加这么一行。

network_mode: 'host'

然后重启docker服务即可。

小结

因为我是使用ipv6解析的域名,因此无法通过域名+端口,也就是ipv6的方式访问docker服务,但实际上只需要把docker的网络模式改为host,这个问题就解决了。如果不想端口被占用,那么可以使用群晖自带的反向代理服务,一样的效果。