Docker-撰写链接 vs external_links

Docker-compose links vs external_links

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

我喜欢 external_links,因为我希望拥有核心 docker-compose,并且我希望在不覆盖核心 link 的情况下扩展它。

我到底有什么,我正在尝试设置依赖于 elasticsearch 的 logstash。 Elasticsearch 在核心 docker-compose 中,而 logstash 在依赖项中。所以我不得不在依赖的 docker-compose 中定义弹性搜索作为参考,因为 logstash 需要它作为 link。但是 Elasticsearch 已经有它自己的 links,我不想在相关的中重复它们。

我可以用 external_link 代替 link 吗?

我知道 links 会确保 link 在 linking 之前先启动,external_link 会做同样的事情吗?

感谢任何帮助。谢谢

我认为 external_link 不会像 docker-compose up 命令中的 links 那样。

links 等待容器启动并获取 etc/hosts 文件中使用的 IP 地址,因此 external_link 已经 IP:hostname 值 [=] 中描述的名称24=]-编写文件。

此外links will be deprecated

当您想要 link 同一 docker-compose.yml 中的容器时,请使用 links。您需要做的就是将 link 设置为服务名称。像这样:

---
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

如果您想 link docker-compose.yml 中的一个容器到另一个未包含在同一 docker-[=20= 中的容器] 或以不同的方式启动,那么您可以使用 external_links 并将 link 设置为容器的名称。像这样:

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

我会建议第一种方式,除非你的用例出于某种原因要求它们不能在同一个 docker-compose.yml

这是一个使用 Elasticsearch、Logstash 和 Kibana 的 link 到 Docker-Compose 项目。你会看到我正在使用 links:

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