iptables의 Docker 개방 포트(rabbitmq)

iptables의 Docker 개방 포트(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 체인은 일반적인 도커 항목으로 채워져 있습니다.

문제

가 외부 세계에서 액세스할 수 없는 경우(HTTP를 통한 Rabbitmq 관리 인터페이스 $somemgtport) .15672

하지만 예상대로 작동하기 때문에($someport에 대한 amqp 호출도 포함) -p플래그를 올바르게 사용한 것 같습니다 .curl https://localhost:$somemgtport

실행 시 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=55001somemgtport=65002) 의 부분 출력입니다 .

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

netstat -pln | grep 15672출력이 없습니다

답변1

지원 중단 알림: 그 질문은 구식입니다. 당시에 만든 질문은 더 이상 존재하지 않습니다. Docker는 오래 전에 포트 리디렉션을 달성하기 위해 iptables 사용을 중단했으며, 질문이 게시된 이후로 네트워크 계층이 처음부터 두 번 이상 다시 작성되었습니다.

관련 정보