web-dev-qa-db-ja.com

boot2docker vm内にもあるDockerコンテナーからlocalhostとしてホストマシンにアクセスする

OSXのポート8000​​で実行されているサーバーがあるとします。 Dockerコンテナはlocalhost:8000経由でどのようにアクセスできますか?コンテナ内のアプリが制御できないため、ホスト名も変更できません。

ホストマシンのネットワークにアクセスするためにコンテナに--net="Host"を使用することに関するこれまでの議論を読みました。ただし、私はOSXを使用しており、DockerはVM内で実行されるため、--net="Host"を使用してDockerコンテナからlocalhostがVM私の実機ではありません。

次に、 ポート転送の回避策 を試してみました:VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8000,tcp,,8000,,8000";は役に立ちませんでした。

どんな提案も大歓迎です。

35
Paul Lam

Palimpestorの答えのおかげで、私はそれを理解しました:

--net="Host"の代わりに--add-Host="localhost:10.0.2.2"を使用します

確かに:

  • 10.0.2.2は、NATモード( reference ))でゲストネットワークインターフェイスに定義されたデフォルトゲートウェイです。
    読み取り:それは、boot2dockerから見たホストです。
  • --add-Host...は/ etc/hostsにlocalhost 10.0.2.2を追加しています( reference

注:boot2dockerでNATアダプターを設定する必要がありますVM VirtualBox設定(GUIで設定しましたが、CLIがわかりません) 。

47
lajarre

--net="Host"で実行する代わりに、--add-Host="localhost:192.168.59.3"(boot2dockerホストIP)を試してください。

14
palimpsestor