인터넷에서 virtualbox의 docker 컨테이너에 액세스할 수 없습니다.

인터넷에서 virtualbox의 docker 컨테이너에 액세스할 수 없습니다.

Windows 10에 ToolBox가 설치되어 있습니다.
머신과 Nginx 컨테이너를 생성하고 포트 8000 외부에서 열었습니다.

여기에 이미지 설명을 입력하세요

Docker 머신의 IP는 이고 192.168.99.100, 컨테이너의 IP는 입니다 172.17.0.2.
Windows에서 Nginx에 192.168.99.100:8000. 게다가 Windows 호스트에서 172.17.0.2:80. 또한 컨테이너 내부에서도 인터넷에 접속할 수 있습니다.

전체 구성은 다음과 같습니다.

Container (Nginx)           Docker Host (VirtualBox)            Host (Windows 10)                                                     Router
172.17.0.2:80 <-----------> 172.17.0.1 (docker0)
                            10.0.2.15 (eth0)
                            192.168.99.100:8000 (eth1) <------> 192.168.99.1 (Ethernet 2, VirtualBox Host-Only Ethernet Adapter)
                                                                192.168.1.3 (Ethernet, Intel Hardware Adapter) <--------------------> 192.168.1.1
                                                                                                                                      <Internet static IP address> <-----------> Provider

문제는 Windows 호스트 외부에서 Nginx를 연결할 수 없다는 것입니다. telnet 192.168.1.3 8000라우터에서 시도했지만 연결이 거부되었습니다. Windows 컴퓨터에는 바이러스 백신이 없으며 방화벽이 꺼져 있습니다.

답변1

시간이 지나면 직접 해결책을 찾아보세요 :)

VirtualBox -> Machine settings -> Network -> Adapter 1 (NAT) -> Advanced, Port Forwarding

http스크린샷과 같이 규칙을 추가합니다 .

여기에 이미지 설명을 입력하세요

에 의해 규칙이 ssh자동으로 추가되었습니다 docker-machine create. 마지막 질문은 httpdocker가 포트가 노출된 컨테이너를 생성할 때 자동으로 규칙을 추가하는 방법입니다.

답변2

제목은 인터넷이지만 솔루션에서는 LAN을 선호합니다.

이 코드는 비슷한 트릭을 수행합니다.

netsh interface portproxy add v4tov4 listenport=80 connectaddress=192.168.99.100 connectport=8000 protocol=tcp

관련 정보