DockerコンテナのWildflyが起動しない


10

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アドレスはです。ブラウザでhttp://172.17.0.2:8080/172.17.0.2にアクセスしますが、ブラウザがハングしてタイムアウトします。何が欠けていますか?

更新

私も試したところ、127.0.0.1:8080うまくいきませんでした

アップデート2

コンソールログ:

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

回答stackoverflow.com/a/43762751/7873775を参照して、10.0.75.1 8080および10.0.75.2:8080を試してください。
Evgeniy Khyst

申し訳ありませんが、これは機能しませんでした。dockerとブラウザーの両方を同じWindows 10マシンで実行していますが10.0.75.x、外部アドレスではなく、ブラウザーがWebでそれを見つけようとしますか?
ps0604

1
では、問題を見つけてみましょう。次のCLIコマンドの結果を投稿してください:1. docker --version、2。をdocker run hello-world、3. docker run --detach --publish 8080:80 --name webserver nginx、4.その後、オープンにしてみてくださいlocalhostを:8080
Evgeniy Khyst

コンソールログで更新された質問を参照してください。試しましlocalhost:8080たがタイムアウトしました。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
ps0604

@Evgeniy Khyst Docker ネットワーキングについて話すこの記事を見つけました。コンテナ内で実行されているサーバーはすべてのインターフェース(記事の最後の部分)をリッスンする必要があるとありますが、これは当てはまりますか?
ps0604

回答:


3

デフォルトでは、コンテナを作成するとき、コンテナはポートを外部に公開しません。ネットワーク172.17.XXは内部用です。ホストIPにIPアドレスをバインドする必要がある場合は、次のように-pフラグを指定してdocker containerを実行します。

-p 8080:8080

コンテナーのTCPポート8080をDockerホストのポート8080にマップします


ポートが外部に公開されていない場合、この例が機能するのはなぜですか?
ps0604

@回答を誤って編集してしまいますか。質問を見てみると、それはまさに私がやっていたことです。
ps0604

@ ps0604はネットワークに問題があるようです。あなたの場合、ファイアウォールのルールをチェックしてください
Ivan Vovk

だからあなたの答えは間違っていましたか?
ps0604

正解です。ドキュメントの推奨事項に基づいているためです。
Ivan Vovk

3

送信元:https : //docs.docker.com/docker-for-windows/networking/

ポート転送はlocalhostで機能します。--publish、-p、または-Pはすべて機能します。Linuxから公開されたポートはホストに転送されます。

したがって、http:// localhost:8080からアクセスできる必要があります


それがうまくいかない場合は、Windowsの例を試してください

docker run -d -p 80:80 --name webserver nginx

どちらにアクセスできる必要がありますhttp:// localhost:80

https://docs.docker.com/docker-for-windows/index#explore-the-application-and-run-examples


それでも失敗する場合は、以下を試してください。

docker-machine ip default

そして、http:// [docker-machine-ip]:80を使用します


1
localhost:8080では機能しません。申し訳ありません
ps0604

上に投稿した例を試して、jboss / wildflyに問題があるのか​​、それともWindowsネットワークに問題があるのか​​を確認してください。
タイハル

nginxが機能しない場合は、「docker-machine ip default」を実行して、localhostの代わりにIPを使用してみてください
Tyhal

0

重要な情報は次のDocker container in Windows 10 Proとおりです-これは、Windows上のDockerがどのように機能するかを示す非常に一般的な仕様です。多くのオプションがあります(例:、、、リモートインスタンス...ありDocker for Windows/なしLinux containersDocker 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ネットワークレイヤーにポートをルーティングまたは転送することができます。しかし、それはかなり複雑になる可能性があります。


Jan、私はDocker Desktop for Windowsをインストールし、イメージをダウンロードして、上記のチュートリアルで説明されているようにWildflyコンテナーを実行しました。コンソールでは、問題なく起動することがわかり8080:8080ます。理論的には問題なく機能しますが、機能しません。ネットワーキングについて知りません。どこから始めればよいですか?
ps0604

@ ps0604 Linuxチュートリアルを盲目的に実行したい場合は、Linuxを使用してください。先ほど触れたように、docはあなたの友達です。docs.docker.com/ docker - for - windows / networkingが明示的に言及されていThere is no docker0 bridge on Windows: Because of the way networking is implemented in Docker Desktop for Windows, you cannot see a docker0 interface on the host. This interface is actually within the virtual machine.ます。その制限に対処してください。
Jan Garaj

0

同じ問題に直面しているWindowsシステムで作業しているピアがいました。彼はそれに多くの努力をしました、そして、どこにも着くことができませんでした。Docker Desktop for Windowsで起こっている奇妙なことがたくさんあります。ついにWindowsにLinuxサブシステムをインストールし、そこにdockerをインストールしました。それ以降、それは彼にとって魅力的なものとして機能しました。Windowsを使い続けたい場合で、linuxサブシステムでの作業を気にしない場合は、その方法を使用することをお勧めします。Jan Garajの提案よりもさらに進んだところ、時間の無駄だとわかりました。Docker Desktop for Windowsは、開発コンテナーなどを使用して完全にその中で作業する環境であることを意味します。Host-Containerのようなものは苦痛です。


はい、同意します。WindowsではなくUbuntuでコンテナを作成します。問題はありません。唯一のことは、私がWindowsで開発していることです。そのため、開発中にWindowsで1回、次にLinuxコンテナーで、そして最後にコンテナーをクラウドにアップロードするときに、3回テストする必要があります。Windowsでコンテナーを実行できる場合、テストは2回だけです。
ps0604

これが、私がlinuxサブシステムを提案した理由です。実際には、コンテキストを3回、おそらく2〜2.5回変更する必要はありません;)
Sam Thomas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.