【问题标题】:Docker-compose links vs external_linksDocker-compose 链接与 external_links
【发布时间】:2016-05-11 07:34:17
【问题描述】:

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

我喜欢 external_links,因为我想拥有核心 docker-compose,并且我想在不覆盖核心链接的情况下对其进行扩展。

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

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

我知道链接会在链接之前确保链接首先打开,external_link 也会这样做吗?

感谢任何帮助。谢谢。

【问题讨论】:

    标签: elasticsearch docker logstash docker-compose


    【解决方案1】:

    当您想将同一个 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 中

    【解决方案2】:

    我认为external_link 不会在docker-compose up 命令中执行与links 相同的操作。

    links 等待容器启动并获取在etc/hosts 文件中使用的 IP 地址,因此external_link 已经在 docker-compose 文件中描述了 IP:hostname 值名称。

    另外links will be deprecated

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-23
        • 2018-02-11
        • 1970-01-01
        • 2020-05-11
        • 2020-09-18
        • 1970-01-01
        • 1970-01-01
        • 2018-07-21
        相关资源
        最近更新 更多