호스트가 Docker 컨테이너 액세스 포트를 열 수 있습니까? 구체적으로 MongoDB와 RabbitMQ가 호스트에서 실행 중이며 Docker 컨테이너에서 프로세스를 실행하여 대기열을 듣고 (선택적으로) 데이터베이스에 쓰려고합니다.
컨테이너에서 호스트로 포트를 전달하고 (-p 옵션을 통해) Docker 컨테이너 내에서 외부 세계 (예 : 인터넷)에 연결할 수 있지만 RabbitMQ 및 MongoDB 포트를 노출하고 싶지 않습니다. 호스트에서 외부 세계로.
편집 : 약간의 설명 :
Starting Nmap 5.21 ( http://nmap.org ) at 2013-07-22 22:39 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00027s latency).
PORT STATE SERVICE
6311/tcp open unknown
joelkuiper@vps20528 ~ % docker run -i -t base /bin/bash
root@f043b4b235a7:/# apt-get install nmap
root@f043b4b235a7:/# nmap 172.16.42.1 -p 6311 # IP found via docker inspect -> gateway
Starting Nmap 6.00 ( http://nmap.org ) at 2013-07-22 20:43 UTC
Nmap scan report for 172.16.42.1
Host is up (0.000060s latency).
PORT STATE SERVICE
6311/tcp filtered unknown
MAC Address: E2:69:9C:11:42:65 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 13.31 seconds
컨테이너를 사용하여 인터넷 연결을 얻으려면이 트릭을 수행해야했습니다. 내 방화벽이 도커 컨테이너에서 외부로의 네트워크 연결을 차단하고 있습니다.
편집 : 결국 나는 파이프를 사용하여 사용자 지정 브리지를 만들고 서비스를 브리지 IP에서 수신하도록했습니다. MongoDB와 RabbitMQ가 도커 브리지에서 청취하는 대신이 접근법을 사용하여 유연성을 높였습니다.