質問: ホストの外部からドッカーコンテナに接続する方法(同じネットワーク)[windows] 最初のdockerコンテナーを作成しました。goを使用してサーバーを実行していますが、ホストコンピューターの外部からアクセスできません。 dockerを始めたばかりなので、ここで少し迷っています。サーバーを起動する非常にシンプルなgoコードがあります。goをインストールしてlinuxベースイメージにコードをビルドするdockerイメージをビルドしました。ポート8080でサーバーを実行しているので、次のようにコンテナーを実行しているホストにそのポートを公開します。docker run -p 8080:8080 dockertest それは機能し、ドッカーのマシンipを介してサーバーにアクセスできます(開始時にdockerクイックスタートターミナルに表示されるもの) )、問題は私ですホストの外部からホストしているウェブサイトにアクセスできませんですので、電話で同じipアドレスを開こうとすると、エラーが発生します:このウェブページ使用できません(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)も試してみましたが、同じ結果が得られました:どのwebサイトにもアクセスできませんでしたip。私はこの問題をグーグルで調べて、stackoverflowに関する多くの質問を見つけましたが、どちらも私の問題を解決する助けにはなりませんでした。また、コンピューターでgoコードを実行し、コンピューターのipを介して同じネットワーク内の別のデバイスからwebサイトにアクセスできます。 dockerマシンで実行しているときにアクセスできない理由がわかりません。ip転送などに関係している可能性がありますが、ネットワークの完全な初心者です。ほとんどがウェブ開発者であり、ネイティブの経験はほとんどありません。
回答: oracle vm virtualbox managerを開きます dockerが使用するvmを選択します [設定]-> [ネットワーク]をクリックします アダプタ1は(デフォルト?)「接続先:nat」である必要があります [詳細]-> [ポート転送]をクリックします ルールの追加:プロトコルtcp、ホストポート8080、ゲストポート8080(ホストipとゲストipは空のままにします) ゲストはあなたのドッカーコンテナであり、ホストはあなたのマシンです これで、localhost:8080およびyour-internal-ip:8080を介してコンテナーを参照できるようになります。