Docker를 통해이 작업을 수행 할 수는 없지만 호스트 시스템에서 컨테이너의 노출되지 않은 포트에 액세스 할 수 있습니다.
포트 8000에서 실행중인 컨테이너가있는 경우 다음을 실행할 수 있습니다.
wget http://container_ip:8000
컨테이너의 IP 주소를 얻으려면 다음 두 명령을 실행하십시오.
docker ps
docker inspect container_name | grep IPAddress
내부적으로 Docker는 이미지를 실행할 때 iptables를 호출하기 위해 껍질을 벗기므로 약간의 변형이 가능합니다.
로컬 호스트 포트 8001에서 컨테이너의 포트 8000을 노출하려면 :
iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
이것을 해결할 수있는 한 가지 방법은 원하는 포트 매핑으로 다른 컨테이너를 설정하고 iptables-save 명령 의 출력을 비교하는 것입니다 (트래커가 트래픽을 도커를 통과하도록 강제하는 다른 옵션 중 일부를 제거해야했습니다) 대리).
참고 : 이것은 도커를 파괴하는 것이므로 푸른 연기를 생성 할 수 있다는 인식으로 수행해야합니다
또는
또 다른 대안은 무작위 호스트 포트를 사용하는 (새로운? post 0.6.6?) -P 옵션을 찾아서 연결하는 것입니다.
또는
0.6.5에서는 LINKs 기능을 사용하여 기존 컨테이너와 대화하는 새 컨테이너를 가져올 수 있으며 컨테이너의 -p 플래그에 대한 추가 릴레이가 있습니까? (아직 LINK를 사용하지 않았습니다)
또는
도커 0.11? docker run --net host ..
컨테이너를 호스트의 네트워크 인터페이스에 직접 연결 하는 데 사용할 수 있습니다 (즉, net은 이름 간격이 아님). 따라서 컨테이너에서 연 모든 포트가 노출됩니다.