一台 PC 作为家用服务器使用,上面使用 Docker 跑了若干容器。
由于防火墙和透明代理配置的需要,需要部分容器使用独立 IP 来跑,并在相关规则中添加这些 IP 的规则。 于是我开始使用 Docker 提供的 macvlan 功能,创建了一个 macvlan 类型的 network ,相关容器配置使用这个 network ,并指定独立 IP 。
容器创建出来后是可以按照预期运行的,在其他设备访问这些 IP 也都可以正确访问到这些容器。
问题是在这些容器开始建立一些网络连接后,这些容器就会变得不可访问,直到连接断开才重新恢复访问。容器本身的运行状态正常(无闪退、死机)。其他非 macvlan 容器访问正常。
举个例子,用容器跑 aria2 或 transmission ,没有任务的时候可以正常访问,添加任务后,当任务与一定数量节点建立联系后,aria2 或 transmission 的 RPC API 就无法访问,直到任务完成后又恢复访问。
不光从容器外部访问会失联,使用 docker exec 进入到正在运行的容器内部,执行 curl 127.0.0.1 也会失联或延迟数十秒返回结果。
如何排查问题可能出在哪?
系统情况:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.