Docker 在 iptables (rabbitmq) 中開啟端口

Docker 在 iptables (rabbitmq) 中開啟端口
  • 我有一個基於rabbitmq.

  • 我的 Dockerfile 中沒有任何內容指定有關連接埠的任何內容。

  • 我透過運行我的實例將常用的rabbitmq端口(5671、5672和15672)綁定到我的自訂端口,如下所示:

    docker run -d -p $someport:5671 -p 127.0.0.1::5672 -p $somemgtport:15672 myimage

  • 我的 iptables INPUT 鏈中沒有任何內容,FORWARD 鏈中充滿了常見的 docker 內容。

問題

When$somemgtport不同於15672我無法從外界存取它(透過HTTP 的rabbitmq 管理介面)。

但看來我-p正確使用了該標誌,因為curl https://localhost:$somemgtport它按預期工作(以及 amqp 對 $someport 的調用)。

運行時,iptables DOCKER鏈如下:

Chain DOCKER (1 references)
 target     prot opt in     out     source               destination
 ACCEPT     tcp  --  !docker0 docker0  anywhere             xyz  tcp dpt:15672
 ACCEPT     tcp  --  !docker0 docker0  anywhere             xyz  tcp dpt:5671
 ACCEPT     tcp  --  !docker0 docker0  anywhere             xyz  tcp dpt:amqp

因此它不會打開連接埠 $someport 和 $somemgtport ,而是打開與容器「內部」相對應的連接埠:5671 和 15672 (來自rabbitmq 的連接埠)。

=> 在我看來,它的表現與我的預期完全相反......!

我的命令做錯了什麼docker run

注意:我想要預設端口以外的其他端口,因為我在同一台機器上運行 2 個rabbitmq 實例。


netstat -pln更新 - 這是(與someport=55001)的部分輸出somemgtport=65002

tcp6       0      0 :::55001                :::*                    LISTEN      29613/docker-proxy
tcp6       0      0 :::65002                :::*                    LISTEN      29622/docker-proxy

netstat -pln | grep 15672沒有輸出

答案1

棄用通知:這個問題已經過時了,當時可能創造它的任何東西都不再存在了。 Docker很早以前就停止使用iptables(實現連接埠重定向),自從問題發布以來,網路層至少被重寫了兩次。

相關內容