Windows 10 ProのDockerコンテナーで実行されているWildflyのウェルカムページにアクセスしようとしています。これは私がやったことです:
画像を引っ張った:
docker pull jboss/wildfly
Wildflyコンテナーを実行します(これは正常に機能します。Wildflyログでは、正しく開始されていることがわかります)。
docker run -it -p 8080:8080 jboss/wildfly
コンテナIDを見つけます。
docker ps
IPアドレスを検査します。
docker inspect -f "{{ .NetworkSettings.IPAddress }}" cac63ed21d78
IPアドレスは172.17.0.2
です。ブラウザでは http://172.17.0.2:8080/ にアクセスしますが、ブラウザがハングしてタイムアウトします。何が欠けていますか?
[〜#〜]更新[〜#〜]
私も127.0.0.1:8080
を試しましたが、うまくいきませんでした
UPDATE2
コンソールログ:
docker --version
#Docker version 19.03.1, build 74b1e89e8a
docker run hello-world
#Hello from Docker!
docker run --detach --publish 8080:80 --name webserver nginx
#Unable to find image 'nginx:latest' locally
#latest: Pulling from library/nginx
#8ec398bc0356: Pull complete
#465560073b6f: Pull complete
#f473f9fd0a8c: Pull complete
#Digest: sha256:b2d89d0a210398b4d1120b3e3a7672c16a4ba09c2c4a0395f18b9f7999b768f2
#Status: Downloaded newer image for nginx:latest
#c5cdb6de11240b5fe33bc424779721e1b44948797fd6ff389004d0766b71dd17
docker ps
#CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c5cdb6de1124
#nginx "nginx -g 'daemon of" 10 minutes ago Up 10 minutes 0.0.0.0:8080->80/tcp webserver
差出人: https://docs.docker.com/docker-for-windows/networking/
ポート転送はlocalhostで機能します。 --publish、-p、または-Pはすべて機能します。 Linuxから公開されたポートはホストに転送されます。
したがって、 http:// localhost:808 からアクセスできる必要があります
それがうまくいかない場合は、Windowsの例を試してください
docker run -d -p 80:80 --name webserver nginx
アクセス可能にする必要があります http:// localhost:8
https://docs.docker.com/docker-for-windows/index#explore-the-application-and-run-examples
それでも失敗した場合:
docker-machine ip default
そして http:// [docker-machine-ip]:8 を使用します
デフォルトでは、コンテナを作成するとき、コンテナはポートを外部に公開しません。ネットワーク172.17.X.Xは内部用です。 IPアドレスをホストIPにバインドする必要がある場合は、次のように-pフラグを指定してdocker containerを実行します。
-p 8080:8080
TCPコンテナーのポート8080をDockerホストのポート8080にマップします。
同じ問題に直面しているWindowsシステムで作業しているピアがいました。彼はそれに多くの努力を費やしました、そして、どこにも着くことができませんでした。 Docker Desktop for Windowsで起こっている奇妙なことがたくさんあります。ついにWindowsにLinuxサブシステムをインストールし、そこにdockerをインストールしました。それ以降、それは彼にとって魅力的なものとして機能しました。 Windowsを使い続けたい場合で、linuxサブシステムでの作業を気にしない場合は、その方法を使用することをお勧めします。 Jan Garajの提案よりもさらに進んだところ、時間の無駄だとわかりました。 Docker Desktop for Windowsは、開発コンテナーなどを使用して、その中で完全に作業できる環境にすることを目的としています。ホストコンテナーのようなものには苦労します。
重要な情報はDocker container in Windows 10 Pro
-これは、Windows上のDockerがどのように機能するかを示す非常に一般的な仕様です。多くのオプションがあります。 Docker for Windows
あり/なしLinux containers
、Docker toolbox
、リモートインスタンス、...
通常、Windows上のDockerコンテナーは、通常、ある種の仮想マシン(Hyper-V、Virtualboxなど)で実行されます。そのため、Windowsネットワーク名前空間から直接アクセスできない可能性のある追加のネットワークレイヤーがあります。しかし リンクされた例 は、この追加のネットワーク層が存在しないLinuxマシンで実行されます。そして、それがLinuxのコピー/貼り付けの例がWindowsで機能しない理由です。そのため、通常どおりコンテナーを実行し、ポート8080を公開します。
docker run -it -p 8080:8080 jboss/wildfly
ただし、内部のDockerネットワークはWindowsからアクセスできない可能性が高いため、アクセス用のIPは異なり、コンテナーIPは使用できません。むしろあなたのWindows OSのIPを使用してみてください。最終的に、使用済みのドキュメントを確認してくださいDocker on Windows
ソリューションを見つけ、公開されたポートに使用されているIPを見つけます。
高度なWindows/Linuxネットワークスキルをお持ちの場合は、コンテナネットワークの名前空間から中間のVMネットワークレイヤーからWindowsネットワークレイヤーに)経由でポートをルーティング/転送することができますが、かなり複雑になる可能性があります。