をベースにした Docker イメージを持っています
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 のものが入っています。
問題
外部から(HTTP 経由の rabbitmq 管理インターフェースに)アクセスできない場合$somemgtport
と異なります。15672
-p
しかし、期待どおりに動作するため、フラグを正しく使用したようですcurl https://localhost:$somemgtport
($someport への amqp 呼び出しも同様です)。
実行中、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 (ポート リダイレクトを実現するため) の使用を中止しており、この質問が投稿されてから少なくとも 2 回、ネットワーク層は最初から書き直されています。