DockerToolbox-ローカルホストが機能しない


100

そのため、Windows 10プロではないためマシンにHyper-Vがないため、DockerToolboxを使用しています。すべてが正常に機能しているように見え0.0.0.0:80ますが、ブラウザにアクセスしようとすると、常に返されます。このサイトにアクセスできません。

しかし、コマンドを実行するとdocker container ps、次のようになります0.0.0.0:80->80/tcp。このアドレスが機能することを意味します。stackoverflowとgithubの問題を検索しました。今、私は立ち往生しています。

私は何かが足りないのですか?

ありがとう、マーク

編集:

を使用docker-machine ip defaultすると、私が返されます192.168.99.100。ポート80で実行します。アドレスがコンテナIDになることを除いて、同じ結果が得られます。https://fd677edg12

cmdでそのコマンドを実行して、ipv4を見つけますcmd /k ipconfig /all。結果をポートに入力すると、同じ結果が返されます。https://fd677edg12


1
0.0.0.0は実際のアドレスではありません。これは、ポートがすべてのDockerのホスト(Windowsコンピューター)インターフェイスにバインドされていることを意味します。localhost:80またはコンピュータのIPアドレスを試してください:80
fvu 2017年

@fvuまだ「このサイトにアクセスできません」というメッセージが表示されます。私も試したdocker-machine default ip -> 192.168.99.100ので、これをアドレスに入れました:192.168.99.100:80私はまだ同じ結果を得ます。
マーク

1
リダイレクトされている場合-壊れているのはアプリです。dockerが同じコンピューターで実行されているとすると、localhost:80
user2105103 2017年

回答:


179

Docker Toolboxは、Docker for Windowsほど便利ではありませんが、Homeエディションを使用しているので、正しく使用できます。

Toolboxでは、VirtualBoxでLinux VMを実行しているため、何も表示されずlocalhost192.168.99.100デフォルトで表示されます。

だからあなたが走れば docker run -p 80:80 nginx

192.168.99.100そのポートでリッスンするためにポートを公開する必要があることに注意してください)

その後、に行くhttp://192.168.99.100必要があります。


返信ありがとうございます。追加されdocker run -p 80:80 -d nginxた以外は、あなたの手順に従っています。そのアドレスにアクセスすると、リダイレクトされますhttps://dev/。ここでも、サイトにアクセスできないと表示されます。また、hostsファイルが何かあるかどうかを確認したかったのです(ただし、ローカルホストではないことはわかっています)。私はそこにすべてコメントしました。
マーク

何度か試みた後、私はついにそれを機能させました。悲しいことに、何が問題だったのかよくわかりません。
マーク

1
ボーナス情報:Docker Toolbox(Windows 7、8、8.1、および10 Homeで使用)は、実際にはdocker-machinecliにラップされた単なる起動スクリプトです。を使用docker-machine --helpして、VirtualBox VMを管理する(またはさらに作成する)ために何ができるかを確認できます。
ブレットフィッシャー

64

DockerToolBoxとOracleVMVirtualBoxの使用中に、localhost:8080でアプリケーションにアクセスする際に最初にいくつかの問題が発生しました。

VirtualBoxの場合:

  1. 適切なマシン(おそらく「デフォルト」とラベル付けされたマシン)をクリックします
  2. 設定
  3. ネットワーク>アダプタ1>詳細>ポートフォワーディング
  4. 「+」をクリックして、新しいルールを追加します
  5. ホストポート8080とゲストポートを設定し8080ます; ホストIPとゲストIPは空のままにしてください

次のコマンドを実行します。

docker run -p 8080:8080 ${image_id}

リモートAPIでCORSが設定されているため、localhost:8080として実行する必要があります。とても素晴らしく、とてもシンプルです、ありがとう!
phazei 2017年

1
すごい。どこでもそれはできないと言っていますが、ここにあります。
superPhreshHackerKid

また、このポートで既にリッスンしている他のものや、hostsファイルのlocalhost / 127.0.0.1エントリを台無しにしないようにしてください(C:\Windows\System32\drivers\etc\hosts)-動作する前に両方をチェックする必要がありました;-)
msa

チャームのように働いた!
Daggie Blanqx-Douglas Mwangi

43

https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershellでdockerfor Windowsチュートリアルをフォローしていましたが、Webブラウザーでnginxをテストすると、手順6でスタックしました。 。私もWindowsHomeを使用していて、Hyper-Vを持っていないので、同様の問題に直面したようです。私の回避策は非常に簡単です:

  1. DockerIPのデフォルトを確認してください

$ docker-machine ip default

192.168.99.100

  1. Oracle Virtual Machineに移動して、ポート転送を設定します。ネットワーク設定がNATであることを確認し、ポート転送を追加します。ホストIP:127.0.0.1、ゲストIP:192.168.99.100、ポートはすべてこのように80に設定されてい ます

  2. ブラウザで再試行し、http:// localhostまたはhttp://127.0.0.1を実行します(ポート80も追加できます)。実行する必要があります。

重要なのは、nginx IPはDocker仮想マシン内でアクセスできるようになっているため、ホストマシンのブラウザーで直接アクセスするには、ポートフォアディング設定が必要です。


2
HOST:CONTAINERポートが異なる場合が必要でしたdocker run --detach --publish 8081:80 --name webserver nginx。この場合HOST、ポートのみを転送する必要があることがわかりましたHost IP=127.0.0.1。つまり、VirtualBoxの設定 です。Host Port=8081; Guest IP=192.168.99.100; Guest Port=808180私が以前に思っていたようではありません。転送ドッカーツールボックスドッカーとの私のWindows 7マシンコンテナ港から中のように見える80192.168.99:8081と、前方からI192.168.99:8081localhost:8081ので、192.168.99:8081Webブラウザには何も表示されません。
and1er

13

localhost次の手順に従って、「192.168.99.100」の代わりに使用できます。

ステップ#01:

docker-machine ip default

デフォルトのIPが表示されます

ステップ#02:

docker-machine stop default

ステップ#03:

  1. VirtualBox Managerを開きます(WindowsサーチのスタートプログラムからVirtualBox Manager
  2. Docker Machine VirtualBoxイメージを選択します(例:デフォルト)
  3. [設定]-> [ネットワーク]-> [詳細設定]-> [ポート転送]を開きます
  4. アプリ名、目的のホストポート、ゲストポートを追加します i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

ステップ#04: これで、以下を実行してDockerマシンを起動する準備が整いました。

docker-machine start default

次に、Dockerコンテナを起動するだけで、ローカルホスト経由でアクセスできるようになります。

詳細はこちらをご覧ください。


2

localhostDockerマシンのIPに直接アクセスする代わりに、期待されるポートをマップするには、VirtualBoxCLIを使用できます。

docker-machine VM(ここではdefault)が実行されている場合は、次のようなルールを追加および削除します。

> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx

VMが実行されていない場合、またはVMを変更する前に停止する場合:

> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start

ポート転送ルールの形式は[<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>です。

VirtualBoxでは、内部コンテナポートではなく、Dockerマップのホストポートにマップする必要があることに注意してください。ホスト-> VMをマッピングし、次にDockerがVM->コンテナをマッピングします。

VirtualBoxのドキュメントを参照してください。


1

これは、IP192.168.99.100の入力を回避するもう1つの簡単な方法です。に移動しC:\Windows\System32\drivers\etc\hosts、ファイルの最後に追加します。

192.168.99.100 docker.awesome またはあなたの好みの任意の名前。

ファイルを保存します(管理者権限が必要なので、ファイルを右クリックして管理者として実行し、編集時に保存できるようにしてください)。

選択したドメイン名、この場合はdocker.awesome:8080に移動すると、そこにあります。


0

何度も試した結果、この掲示板を手に入れることができました。

  1. 私が使用したdockerrunコマンド--dockerrun -p 4680:8080 --name bb bulletinboard:1.0ここで、4680はローカルホストのポート番号です。8080はコンテナポート番号であり、コンテナがリッスンするポートです。このポート番号は、DockerfileのEXPOSEコマンドに記載されています。

  2. 次に、Webブラウザーに移動し、192.168.99.100:4680と入力します。

ここで、192.168.99.100はDockerマシンのIPアドレスです(コマンド-> docker-machine ipを使用)

  1. この後、ブラウザページが開くはずです-

ここに画像の説明を入力してください

これが皆さんのお役に立てば幸いです!!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.