web-dev-qa-db-ja.com

Docker-composeリンクとexternal_links

簡単な質問だと思いますが、Docker-composeのドキュメントからはまだわかりません。リンクとexternal_linksの違いは何ですか?

コアのdocker-composeが必要で、コアリンクを上書きせずに拡張したいので、external_linksが好きです。

正確には、elasticsearchに依存するlogstashをセットアップしようとしています。 Elasticsearchはコアdocker-composeにあり、logstashは依存しているものにあります。したがって、logstashがリンクとして必要とするため、依存するdocker-composeのエラスティック検索を参照として定義する必要がありました。ただし、Elasticsearchにはすでに独自のリンクがあり、依存リンクでは繰り返さないようにします。

リンクの代わりにexternal_linkでそれを行うことができますか?

リンクは、リンクがリンクの前に最初に起動していることを確認することを知っていますが、external_linkも同じようになりますか?

どんな助けでもありがたいです。ありがとう。

11
amm

同じdocker-compose.yml内のコンテナーをリンクする場合は、linksを使用します。必要なのは、サービス名へのリンクを設定することだけです。このような:

---
elasticsearch:
  image: elasticsearch:latest
  command: elasticsearch -Des.network.Host=0.0.0.0
  ports:
    - "9200:9200"

logstash:
  image: logstash:latest
  command: logstash -f logstash.conf
  ports:
    - "5000:5000"
  links:
    - elasticsearch

Docker-compose.yml内のコンテナーを、同じdocker-compose.ymlに含まれていないか、別の方法で開始された別のコンテナーにリンクする場合は、external_linksを使用して、コンテナの名前へのリンク。このような:

---
logstash:
  image: logstash:latest
  command: logstash -f logstash.conf
  ports:
    - "5000:5000"
  external_links:
    - my_elasticsearch_container

何らかの理由でユースケースで同じdocker-compose.ymlに入れることができない場合を除き、最初の方法をお勧めします

15
jhinds

external_linkdocker-compose upコマンドのlinksと同じことはしないと思います。

linksは、コンテナが起動してetc/hostsファイルで使用されるIPアドレスを取得するまで待機します。したがって、external_linkには、docker-composeファイルに記述されているIP:hostname値の名前がす​​でにあります。

さらに リンクは廃止される予定です

0
Vaidas Lungis