Docker-compose链接vs external_links

时间:2016-02-02 13:09:33

标签: elasticsearch docker logstash docker-compose

我认为这是一个简单的问题,但我仍然没有从Docker-compose文档中获取它。链接和external_links有什么区别?

我喜欢external_links,因为我想拥有核心docker-compose,我想扩展它而不会覆盖核心链接。

我究竟拥有什么,我正在尝试设置依赖于elasticsearch的logstash。 Elasticsearch在核心docker-compose中,logstash在依赖的中。所以我必须在依赖的docker-compose中定义弹性搜索作为参考,因为logstash需要它作为链接。但Elasticsearch已有自己的链接,我不想在依赖链接中重复它们。

我可以使用external_link而不是链接吗?

我知道链接会确保链接在链接之前首先显示,external_link是否也会这样做?

感谢任何帮助。感谢。

3 个答案:

答案 0 :(得分:13)

如果要将同一个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

答案 1 :(得分:0)

我认为external_linklinks命令中的docker-compose up不同。

links等待容器启动并获取etc/hosts文件中使用的IP地址,因此external_link已经知道了:docker-compose文件中描述的IP:hostname values name。 / p>

此外links will be deprecated

答案 2 :(得分:-2)

这是使用Elasticsearch,Logstash和Kibana的Docker-Compose项目的链接。你会看到我正在使用链接:

https://github.com/bahaaldine/elasticsearch-paris-accidentology-demo