2016-02-02 9 views
6

Wierzę, że jest to proste pytanie, ale nadal nie dostaję go z dokumentacji Docker-compose. Jaka jest różnica między linkami a external_links?Docker-komponować linki vs external_links

Podobają mi się linki zewnętrzne, ponieważ chcę mieć rdzenny komponent dokowania i chcę go rozszerzyć bez przesłonięcia głównych łączy.

Co dokładnie mam, próbuję skonfigurować logstash, który zależy od elastycznego wyszukiwania. Elasticsearch znajduje się w rdzeniu docker-compose, a logstash jest w zależności. Musiałem więc zdefiniować wyszukiwanie elastyczne w zależnym składniku dokowanym jako odniesienie, ponieważ logstash potrzebuje go jako łącza. ALE Elasticsearch ma już własne linki, których nie chcę powtarzać w zależnym.

Czy mogę to zrobić z external_link zamiast linku?

Wiem, że linki upewnią się, że link jest pierwszy przed połączeniem, czy external_link zrobi to samo?

Każda pomoc jest doceniana. Dzięki.

Odpowiedz

12

Zastosowanie links gdy chcemy połączyć ze sobą pojemników w obrębie tej samej Döcker-compose.yml. Wszystko, co musisz zrobić, to ustawić link do nazwy usługi. Tak:

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

Jeśli chcesz połączyć pojemnik wewnątrz Döcker-compose.yml do innego pojemnika, który nie został uwzględniony w tym samym Döcker-compose.yml lub rozpoczął się w inny sposób, a następnie można użyć external_links i ustawiasz link do nazwy kontenera. Tak:

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

Proponuję pierwszy sposób, chyba że przypadek użycia jakiegoś powodu wymaga, że ​​nie mogą być w tym samym Döcker-compose.yml

+0

Może warto go połączyć z oficjalnymi Docs, a także: https://docs.docker.com/compose/compose-file/#links i https://docs.docker.com/compose/compose-file/#external-links – dnephin

0

Myślę, że external_link nie zrobi tego samego, co links w poleceniu docker-compose up.

links czeka na uruchomienie kontenera i uzyskanie adresu IP, który jest używany w pliku etc/hosts, dlatego też external_link ma już adres IP: nazwa wartości hosta opisana w pliku dokowania.

Ponadto links will be deprecated