2016-10-31 2 views
13

私はdocker APIと読んで、単純なコンテナを作成して1つのポートを公開しようとしています。私の例ではWindows用のDocker for Windowsを使用してホストへのコンテナポートを公開してください

、私はコンテナ内TCPポート9595に聞くと、私はポート9090に外の世界(コンテナのすなわち、ホスト)からアクセスするアプリケーションを持っています。

コンテナを作成するときは、"ExposedPorts": { "9595/tcp: {}" }とがあります。

したがって、私はホストマシンhttp://container_internal_ip:9595からアクセスすれば動作します! docker port containerIDを実行している間、私はこのポートマップ機能を使用して、それが動作しない期待するものであるhttp://localhost:9090、...

にアクセスするときしかし、私は9595/tcp -> 0.0.0.0:9090、それはすべき手段、when connecting to any IP on the host, at port 9090, forward to the container in port 9595を持っています。

ここで何が間違っていますか? 9090に接続できないのはなぜですか?

わかりました。

+0

質問で、このための良い過去記事があります。少なくともドッカーコマンド、イメージが使用しているコマンド、またはDockerfileが必要です。 WindowsコンテナまたはLinuxコンテナ –

+0

**ドッカーのリモートAPI **はどのドッカーのエンジンに対してですか? Windowsコンテナ? Linuxコンテナ?ベースイメージなしでコンテナを実行することはできません。どのようなイメージですか?あなたは** Docker Remote API **をどのように呼びましたか?それは再三の権利ですか?どのようなコマンドを使用しましたか?あなたは** ENUUGH **の情報を与えないとあなたが何を求めているかについて知ることはできません**。 –

+0

申し訳ありませんが、私はカルロスを無礼にするつもりはありませんが、あなたのコメントは質問には関係しませんでした。画像に何が問題なのかは問題ではありません。重要なことは、APIのドキュメントによると、ポート9090はコンテナの外部に公開され、コンテナ内のポート9595にマップされていて動作していないことです。Netshは、コンテナの動作や設定に影響を与えません。 –

答えて

3

使用しているドッカーのコマンドを投稿してください。

Docker ToolboxまたはDocker for Windowsを使用する場合は、特別な処置が必要です。 localhostが問題なく表示されます(コンテナがLinuxの場合)。あなたはローカルホストは表示されませんが、あなたのコンテナがWindowsの場合

netsh interface portproxy add v4tov4 listenaddress=yourip listenport=9090 connectaddress=10.0.75.1 connectport=9090 

を、あなたは、コンテナ内部アドレスを使用する必要があります:あなたはあなたのコンテナが外から見えるようにしたい場合は、高架パワーシェルでこれを試してみてください

docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" <cointainerid> 

参考:https://blog.docker.com/2016/09/build-your-first-docker-windows-server-container/

よろしく

+0

こんにちはカルロス、はい、私はwin10上のWindowsベータ用の最新のドッカーと 'docker info'を返します' 'ServerVersion": "1.12.2-cs2-ws-beta" 'そしてDocker API v1.24(https ://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#create-a-container) 'PortBindings'が実際に存在します。 –

+0

ドッカーfor Windows用に余分なポートリダイレクションが必要です。私は答えを更新する –

+0

実際に私は 'docker inspect'を使用しました。それは命名法の違いを説明しています。 –

2

ポートが本当にされています期待通りに「外界」に晒されていると、ループバックインターフェイス(localhostまたは127.0.0.1)上のコンテナホストマシン自体からは、現在のWindowsネットワーキングの制限のためにアクセスできなくなります。コンテナホストのループバックインターフェイス経由でアクセスしようとするのではなく、コンテナホストipとコンテナの公開ポート番号を使用して、ネットワーク上の別のマシンからアクセスしてみます。

十分な情報を持っていないhttps://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/

関連する問題