web-dev-qa-db-ja.com

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

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
10
ps0604

差出人: 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 を使用します

2
Tyhal

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

-p 8080:8080

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

2
Ivan Vovk

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

0
Sam Thomas

重要な情報は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ネットワークレイヤーに)経由でポートをルーティング/転送することができますが、かなり複雑になる可能性があります。

0
Jan Garaj