Docker
埠未在防火牆上打開,但可以訪問
我在我的伺服器上使用 centos 7 和 firewallD。
我還在這台機器上安裝了 docker 並將其添加到我的防火牆的受信任區域。
我有一個偵聽埠的容器,
9081
但該埠未在防火牆上打開,奇怪的是該埠可以從我的家用電腦訪問。這是的輸出
firewall-cmd --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: 443/tcp 80/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
我有兩個活動區域:
trusted
和public
這是命令的輸出
firewall-cmd --zone=trusted --list-all
trusted (active) target: ACCEPT icmp-block-inversion: no interfaces: docker0 sources: services: ports: 4243/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
顯然,該埠
9081
在任何區域都沒有打開,但我仍然可以訪問它。為什麼?如何關閉它?
我意識到使用 firewallD 執行 Docker 存在一些錯誤。
一個簡單的解決方法是更改在 docker 中定義埠的方式。就我而言,我不得不將我的 docker-compose 更改為:
ports: - "127.0.0.1:9081:8081"
重要的部分是
127.0.0.1
在定義主機埠之前使用。