2016-09-29 6 views
2

私はドッカーコンテナの中でガンコンを使います。私はこれがうまく動作することを知っています。そして、localhost:8000/dockerコンテナのものは、私が望む応答を与えますが、ドッカーがポートがマップされていると言っていますが、私はホスト上でこれに到達できません。何がありますか?ドッカーがガンコンを使用しているポートをマッピングしていません

私は

docker run -d -p 80:8000 myapp:version1.1 /bin/bash -c 'gunicorn things:app' 

docker psはカーリングlocahost /物事が私に

curl: (52) Empty reply from server 

を与えるしかし、ときに私docker exec -t -i 614df1f2708e /bin/bash、その後curl localhost:8000/things、私は、私に私のホスト上で

CONTAINER ID  IMAGE      COMMAND     CREATED    STATUS    PORTS       NAMES 
614df1f2708e  myapp:version1.1 "/bin/bash -c 'gunico" 6 minutes ago  Up 6 minutes  5000/tcp, 0.0.0.0:80->8000/tcp evil_stallman 

を与える走っ

正常に私の正しい応答を得る。

ドッカーがポート8000​​を正しくマッピングしていないのはなぜですか?

+0

あなたはMacにいますか? – Matt

+0

はい私はMacのドッカーを使っています:P – 1N5818

+0

もし私が間違っていれば誰かが私を修正しますが、Macはドッカーをネイティブにサポートしていませんが、ドッカーをサポートしているVM 。したがって、localhostではなく、VMのIP /ホスト名からカールする必要があります。 – CivFan

答えて

5

ポートを公開すると、Dockerは要求をコンテナに転送しますが、コンテナはそれをリスンする必要があります。コンテナにはDockerネットワークのIPアドレスがあり、アプリケーションはそのアドレスでリッスンする必要があります。

Check your gunicorn bind setting - 受信者が127.0.0.1:8000の場合はコンテナのIPアドレスにバインドされていないため、外部からのリクエストは受け付けません。 0.0.0.0:8000はすべてのアドレスにバインドするので安全です。

関連する問題