ホスト外(同じネットワーク)からDockerコンテナに接続する方法 [Windows] 質問する

ホスト外(同じネットワーク)からDockerコンテナに接続する方法 [Windows] 質問する

初めての Docker コンテナを作成しました。Go を使用してサーバーを実行していますが、ホスト コンピューターの外部からはアクセスできません。Docker を使い始めたばかりなので、少し困惑しています。

サーバーを起動する非常にシンプルな Go コードがあり、Go をインストールして Linux ベース イメージにコードをビルドする docker イメージを構築しました。サーバーをポート 8080 で実行しているので、次のようにそのポートをコンテナーを実行しているホストに公開します。

docker run -p 8080:8080 dockertest

それはうまくいき、dockerのマシンIP経由でサーバーにアクセスできるようになりますDocker クイックスタートターミナル開始時に)問題は私がホストの外部からホストしているウェブサイトにアクセスできない、そのため、携帯電話で同じ IP アドレスを開こうとすると、「この Web ページは利用できません (ERR_CONNECTION_TIMED_OUT)」というエラーが表示されます。

次のように IP を指定することも試しました:

docker run -p 192.168.0.157:8080:8080 dockertest

しかし、そうすると、Docker マシンの IP からも、上記のコマンド ラインで指定した IP からも Web サイトにアクセスできなくなります。また、そのコマンドでどの IP を記述すればよいのかもわかりません。自分のコンピューターの IP を使用しました。127.0.0.1 (localhost) も試しましたが、結果は同じで、どの IP でも Web サイトにアクセスできませんでした。

私はこの問題をグーグルで検索し、StackOverflow の多くの質問を見つけましたが、どちらも問題の解決に役立ちませんでした。そのほとんどは Linux または Mac 向けだったので、解決策は私の状況には当てはまりませんでした。

また、自分のコンピューターで Go コードを実行し、同じネットワーク内の別のデバイスから自分のコンピューターの IP を介して Web サイトにアクセスできます。Docker マシンで実行しているときにアクセスできない理由がわかりません。IP 転送か何かに関係しているのではないかと考えましたが、私はネットワークの完全な初心者で、主に Web 開発者であり、ネイティブの経験はほとんどありません。

ベストアンサー1

  1. Oracle VM VirtualBoxマネージャを開く
  2. Dockerが使用するVMを選択する
  3. 設定 -> ネットワークをクリック
  4. アダプタ 1 は (デフォルト?) 「接続先: NAT」である必要があります
  5. 詳細設定 -> ポート転送をクリックします
  6. ルールを追加: プロトコル TCP、ホスト ポート 8080、ゲスト ポート 8080 (ホスト IP とゲスト IP は空のままにします)
  7. ゲストはDockerコンテナ、ホストはマシンです

これで、localhost:8080 および your-internal-ip:8080 経由でコンテナを参照できるようになります。

おすすめ記事