VS2017 Dockerサポートを使用しています。 VSはDockerFileを作成し、私がdocker-composeファイルを作成すると、コンテナーが作成され、172.x.x.x IPアドレスでアプリが実行されます。しかし、私は自分のアプリケーションをlocalhostで実行したいと思っています。
私は多くのことをしましたが、何もうまくいきませんでした。最初に docker docs および building Microsoft sample app に従いました。 2番目のリンクは完全に機能していますが、最初のリンクのアプローチを試行すると、HTTPエラー404が発生します。
どんな助けでもありがたいです。
機能していないと指摘したDocker Docsに投稿された例にアクセスするには、以下の手順に従います。
1-実行中のすべてのDockerコンテナーを一覧表示します
docker ps -a
このコマンドを実行すると、現在実行中のすべてのDockerコンテナーを表示できるはずです。Dockerのドキュメントの例に正しく従えば、webserver
という名前のコンテナーがリストに表示されます。
2-webserver
コンテナーが実行されているIPアドレスを取得します。これを行うには、次のコマンドを実行します。
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" webserver
webserver
コンテナーが実行しているIPアドレスを取得する必要があります。質問に添付したMicrosoftサンプルアプリのビルド例でも使用できるため、このステップに精通していることを願っています。
上記のコマンドを実行すると、取得したIPアドレスにアクセスすると、目的の出力が表示されます。
最初の質問(Windowsのdockerでlocalhostを使用してdockerコンテナーにアクセスする)に答えると、Windowsホストでは、デフォルトのNATネットワークスタックの制限により、localhostを使用してコンテナーにアクセスできません。詳細この問題の説明は、この link にアクセスして取得できます。Dockerのドキュメントはまだ更新されていないようですが、この問題のみです。 Windowsホストに存在します。
これについても報告されている問題があります-これを参照するには、これをフォローしてくださいlink。
これがお役に立てば幸いです。
[〜#〜]編集[〜#〜]
この問題の解決策は、将来のWindowsリリースで提供される予定です。しかし、そのリリースでは、この制限がWindowsホストで利用できます。このリンクをたどってください-> https://github.com/MicrosoftDocs/Virtualization-Documentation/issues/181
ほとんどの場合、別のアプリケーションがすでにポート80で実行されています。Webサイトを別のポートに転送する必要があります。例:
docker run -d -p 5000:80 --name myapp myasp
また、ブラウザでhttp://localhost:5000
をポイントします。
コンテナーを起動するときに、-p
オプションを使用して、ホストのポートとして公開される内部ポートを指定します。 -p 80:80
は、Webサイトで使用されるinnerポート80
をホストのポート80に公開します。
Dockerはanotherアプリケーションがすでにポート80でリッスンしている場合、IIS、別のWebアプリケーション、またはデフォルトで80で実行されるWebインターフェースを備えた任意のtoolである場合でも問題を報告しません。
解決策は次のとおりです。
別のポートに転送する方がはるかに簡単です。
canに確実にポートに接続するには、次のようにtelnetコマンドを使用します。
telnet localhost 5000
すぐに空白のウィンドウが表示される場合は、サーバーがこのポートで稼働中であることを意味します。メッセージが表示され、しばらくしてタイムアウトになる場合は、誰も実行していないことを意味します。この両方を使用して、空きポートをチェックしますandコンテナーWebアプリに接続できることを確認します。
[〜#〜] ps [〜#〜]テスト用にSQL Serverコンテナをセットアップしようとしていたので、1週間前にこの問題に遭遇しました。私は1つのデフォルトと2つの名前付きインスタンスをすでに実行しており、docker
はコンテナーを作成しようとしたときにまったく問題がありませんでした。何が悪いのかを理解するのにしばらくかかりました。