2017-11-07 10 views
1

私は別のドッカーを作成し、ポート5044でLogstashを公開しています(docker-elkを使用)。ホスト上のlocalhost:5044上のサービスにリクエストを行うことができるので、ポートが正しく公開されます。Dockerがホスト上のポートへのアクセスを設定します

私は別のドッカー作成(Filebeat)を実行していますが、そこから "localhost:5044"に接続できません。

version: '2' 

services: 

    filebeat: 
    build: filebeat/ 
    networks: 
     - elk 

networks: 

    elk: 
    driver: bridge 

localhostの理由をどれcluye:5044を構成し、このドッキングウィンドウにアクセス可能ではない。ここでドッキングウィンドウのコンファイルはありますか?

+0

別の作曲を開始した後であなたがlocalhostに接続できなかったシステム:5044? – pulankit

+0

他の作成ファイルも投稿できますか? –

+0

@omu_negru他のコンポジションはhttps://github.com/deviantony/docker-elk/blob/master/docker-compose.ymlから入手できます。 – dhrm

答えて

2

まず第一に、あなたはリンクコンファイルには、ポート5000を公開していますが、ポート5044(または5000)を露出させる第二のポートに5044.

を接続しようとしていると言うのポートが利用できるようになります他のコンポーズファイルで起動された他のコンテナには転送されません。

私はそれを見る方法がありますがどちらか:seconサービスの利用your_ipのポート:ポート、your_ipがifconfig -aから取得することができ、それがあるとlocalhostの代わりにとして

  • は、最初のサービスを維持

    • F:または似たようなので、などの外部作成したネットワークに192.168.x.x

    • 接続のように両方のサービスになります

networks: test_network: external: true

次にアクセスlocalhost:portからlogstash:port

にlogstash参照を変更

グッド:IRST docker network create foo

  • リンクとネットワークコンファイルに外部ネットワークへのサービスを作成運

  • +0

    ありがとう、私は2つのサービスを分離するので、私は最初のソリューションが好きです。ホストマシンのローカルIPをfilebeat composeサービス(localhostではなく)で使用すると、期待どおりに動作しています。 IPをこのサービスにハードコードする代わりに、ホストのローカルIPを何らかの方法でコンテナ上のホスト名にバインドするドッキング方法がありますか? – dhrm

    +0

    実際には 'grep' fooをあらかじめ実行し、ENV varを使って値を注入しない限り、実際にはありません。だから私はスタックの詳細を隠して、logstashサービスはポートを公開する必要さえないので、私は2番目の解決策を好む理由です。 –

    +0

    よかったです。最終的に私のサービスは異なるマシン上で実行されるので、ドッカーの共有外部ネットワークは解決策ではありません。 – dhrm

    関連する問題