インターネットから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 が作成するときにルールを自動的にdocker-machine create追加する方法です。http

答え2

タイトルはインターネットですが、ソリューションでは LAN を意味することを希望します。

このコードも同様のトリックを実行します:

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

関連情報