2017-07-27 7 views
1

にサービス名を使用してlogdriver(fluentd)からログインできない:私がドッキングウィンドウで、次のセットアップを持っているコン

  • アプリケーション(httpd)が
  • Fluentd
  • ElasticSearch
  • Kibana

アプリケーションのログドライバの設定では、フルーテッドコンテナについて説明しています。ログはESに保存され、木場に表示されます。

logdriverは、このように構成されている場合、それは動作します:

web: 
    image: httpd 
    container_name: httpd 
    ports: 
     - "80:80" 
    links: 
     - fluentd 
    logging: 
     driver: "fluentd" 
     options: 
     fluentd-address: localhost:24224 
     tag: httpd.access 

そしてfluentdは、ホストのポート24224上の露出ポート24224をマッピングしています。

fluentd: 
    build: ./fluentd 
    image: fluentd 
    container_name: fluentd 
    links: 
     - "elasticsearch" 
    ports: 
     - "24224:24224" 

しかし、私はフルハンドをホストネットワークに公開したくありません。私はこのように(私は唯一のホストネットワーク上のアプリとkibanaをマッピングしたい)ドッカネットワーク内部のプライベート "、それを維持したい:

fluentd: 
    build: ./fluentd 
    image: fluentd 
    container_name: fluentd 
    links: 
    - "elasticsearch" 

ポート24224はまだ(dockerfileで)公開されているが、それはホストネットワークにマップされていません。今、私は私のアプリのlogdriverの設定を変更したい: ログ: ドライバー:「fluentd」 オプション: fluentdアドレス:fluentd:24224 タグ:httpd.access

のでfluentdでの名前です。彼らは同じネットワークにありますが、アプリはそれを接続することはできません。ログオプションは、コンファイルに「link'、オプションの前に実行されるため

failed to initialize logging driver: dial tcp: lookup fluentd 

は多分これですか?

これを行う方法はありますか?

答えて

1

これは現在できません。ログドライバを扱うドッカーdeamonは、ホストマシン上で実行されているプロセスです。ネットワーク内のサービスではないため、サービス名をIPに解決できません。より詳しい説明はgithub issueを参照してください。

これを動作させるには、ポートを公開する必要があります。

+0

よろしくお願いいたします。ありがとう。 – lvthillo

関連する問題