<aside> 💡

如果主機有安裝docker容器, 請解釋一下網路資料的流動優先次序

</aside>

當主機安裝 Docker 容器時,Linux 核心(Kernel)會透過 iptables / nftables 路由與過濾鏈(Chains) 來決定網路資料的流動與優先次序。 [1, 2]

核心結論:Docker 網路鏈具有最高優先權

Docker 啟動時會在主機的防火牆中插入專屬的過濾規則。這些規則的執行順序是**「Docker 內部規則」優先於「主機傳統防火牆(如 UFW、Firewalld)的自訂規則」**。 [1, 2]


1. 外部進入主機的資料流優先次序 (Inbound)

當外部封包(例如瀏覽器請求)送達主機的實體網卡時,Linux 核心會依序經過以下四道關卡: [1]

⚠️ 常見地雷:因為 Docker 規則優先權極高,如果你在主機用 UFW 或 Firewalld 設定「封鎖所有人存取 8080 埠」,通常會無效,外部依然能連進容器。


2. 容器主動外出的資料流優先次序 (Outbound)

當容器內的程式需要連到網際網路(例如下載套件或呼叫外部 API)時,資料流向如下: [1]