immortalwrt-docker-compose-firewall-docker-zone-nat-forwarding-nikki-dns-issue #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
确认两点,然后修正文档。
先回答你的两个问题:
问题 1(你完全正确,而且纠正了我 §8.1 的一处不严谨):「什么都不写」在语法上成立,但在这套环境里,自动建的
<项目>_default会生成一个新网桥(br-开头),它不在防火墙 docker zone 的list device里,所以出网转发/发布端口确实会不通。要精确说清楚的是:jd.com 的域名解析其实能成功(Nikki 豁免是全局的),但流量转发被防火墙拦了——「解析得出 IP」≠「连得上」。你担心的方向对。问题 2(4 行写法正确,且
external: true必须写):那几行是对的、够用。external: true必须显式指定——它告诉 Compose「这个网络已存在,只许用、不许建/删」。不写的话,Compose 会把这个网络当自己管的,docker compose down可能把你手动建的dockercompose一起删掉。name: dockercompose也必须写,否则它会去找一个叫default的外部网络(不存在)。现在修正文档:
...
三处修正完成:
networks,但本环境里自动建的<项目>_default网桥不在防火墙 zone 里,出网/端口会不通(DNS 能解析 ≠ 流量能通),推荐写法指向 §8.3external: true和name: dockercompose都必需,并解释不写external: true会导致down时误删dockercompose;还给了等价简写external: { name: dockercompose }现在文档里 §8 的表述是自洽的:§8.1 讲语法、§8.2 讲原理(三层)、§8.3 给可直接抄的写法,不会再让你产生「什么都不写就能跑」的误解。
你的理解现在完全正确了:多服务 compose 走 §8.3 的复用
dockercompose写法(那几行必须写external: true),单服务/单容器走默认桥,这样既避开防火墙补网桥的麻烦,又享受 Nikki 豁免带来的正常 DNS。还需要我调整别的吗?