.
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=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 사용을 중단했으며, 질문이 게시된 이후로 네트워크 계층이 처음부터 두 번 이상 다시 작성되었습니다.