2017-07-29 6 views
2

内のポートに次のdocker-compose.ymlファイルをしていた拘束力はありませんチュートリアル:Serverは、私は1つのマシンの群れ(すなわち、1つのマスターノード、それはそれだ)がドッキングウィンドウの群れ

docker-machine create --driver virtualbox myvm1 
docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100:2377" 
docker-machine scp docker-compose.yml myvm1:~ 
docker-machine ssh myvm1 "docker stack deploy -c docker-compose.yml hellorocketstack" 

docker machine lsは私にtcp://192.168.99.100:2376のIPを提供します。

webプロセスのDockerファイルも8000を確実に公開します。ローカルでは、このサーバーを実行すると、ポート8000​​に問題なく接続されます。しかし、vm内では、私が192.168.99.100:8001を巻くときに何の要求も受けない(同様に8000)。私がVMを殺してマシンを完全に再起動しても、これは当てはまります。

しかし、他のサービス(例:チュートリアルのビジュアライザーなど)をインストールすると、正常に機能します。

これは私を夢中にしています!何が起こっているのか分かりますか?

また、vm内では、curl localhost:8001(ビジュアライザでは、再マッピングされたポートで動作します)を呼び出すこともできません。どんな助けもありがとう!これをデバッグするために次のステップがありますか?

編集:nc -zv 192.168.99.100 8001も表示されません。 (これは、ビジュアライザのために働く)

EDIT2:docker inspect CONTAINERショー:

 "Config": { 
     "ExposedPorts": { 
      "8001/tcp": {} 
     }, 
    }, 
    "NetworkSettings": { 
     "Ports": { 
      "8001/tcp": null 
     }, 
    } 

取り組ん例えばdocker inspectコマンドショーと同じものである(モジュロは、ポート番号を公開)

+1

ウェブコンテナのログはどのように表示されますか? 'docker exec'でWebコンテナに接続すると' curl http:// localhost:8000'できますか? – BMitch

+0

それは働いた - 私はサーバーからの応答を得た。今何? –

+0

ドッカーサービスを停止し、 'iptables -S'を実行してルールを投稿してください。あなたのVMで 'ufw'または' selinux'または 'firewalld'が有効になっているかどうか確認してください。いくつかのVMは、デフォルトでIPTablesルールを持っていて、22ポートのみを許可しています。 –

答えて

1

はそのロケットが判明localhostで聞きましたが、0.0.0.0ではありませんでした。環境変数ROCKET_ADDRESS=0.0.0.0の設定を修正しました。

Dockerチュートリアルの例では、0.0.0.0localhostに変更することもまったく同じ方法で壊れました。

What is the difference between 0.0.0.0, 127.0.0.1 and localhost?