群晖上使用 docker 部署了思源笔记,同时安装了 webdav,使用群晖的 webdav 做云端服务器出现 网络异常,请稍后重试
的报错。
使用 windows 端和安卓端则没有出现该问题。
于是我 f12 看了下报错来源,发现是来自于 websocket 推送,然后定位到报错位置
ps:可能位置不太对,但均是 util.isOnline return false 导致报错
if !util.IsOnline() { // 这个操作比较耗时,所以要先推送 syncing 事件后再判断网络,这样才能给用户更
util.BroadcastByType("main", "syncing", 2, Conf.Language(28), nil)
return
}
继续定位 utils.IsOnline
func IsOnline() bool {
c := req.C().SetTimeout(1 * time.Second)
resp, err := c.R().Head("https://www.baidu.com")
if nil != err {
resp, err = c.R().Head("https://icanhazip.com")
if nil != err {
resp, err = c.R().Head("https://api.ipify.org")
}
}
return nil == err && nil != resp && nil != resp.Response
}
isOnLine
作用很简单,就是请求一下百度等域名,看本机是否连的到外网。
问题已经很明显了,我开的 docker 容器连不到外网?之前没出些过这种问题啊。
然后我进入了容器内,ping 了下 www.baidu.com
绷不住了,居然 permission denied!?
难道需要使用 root 权限启动再 ping?
然后看了下其他容器,还有使用 windows docker-desktop 启动的思源笔记,没用-u root 命令进入容器也 ping 的通啊。
可惜家里的群晖 nas 的 ssh 端口被我路由器 ban 了,没法进去直接用 docker 命令。
有遇到过相同问题的大佬么?
真心求教。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于