2016-02-29 9 views
5

The documentation about networking is currently bardzo niejasno na ten temat - jak osiągnąć docker-compose.yml, który tworzy sieci wirtualnej, pozwalając usług (kontenerów) zdefiniowanych przez nią komunikować się w tej sieci?Jak zdefiniować sieć w pliku definicji dokowania w wersji 2?

Cel w tym scenariuszu nie polegający na wstępnie zdefiniowanej sieci dla zespołu kontenerów zdefiniowanych dla funkcji dokowania. Zamiast tego definicja sieci musi być niezależna w pliku definicji komponentu dokowanego.

Dzięki zdefiniowanym sieci, to poniżej będzie działać, jeśli aplikacja w A użył nazwy B jako hosta dostępu do aplikacji zapakowane w B słuchania na port 9000. host:port byłoby wykorzystać dla byłoby B:9000 (dokładniej uri mongodb://B:9000 w moim konkretnym przypadku).

foo: 
    net: my-pre-defined-network 
    container_name: A 
    image: foo 
bar: 
    net: my-pre-defined-network 
    container_name: B 
    image: bar 
    ports: 
    - "9000:9000" 

Ale mój punkt widzenia jest zdefiniowanie sieci wewnątrz konfiguracji Döcker-komponować, nie zakładając, że jeden był a-priori zdefiniowane ...

TL; DR

domyślna sieć jest tworzony automatycznie. Informacje na temat adresowania kontenerów w tej sieci można znaleźć w początkowej sekcji https://docs.docker.com/compose/networking/.

+0

jaka sieć chcesz zdefiniować? –

+0

Jedna, która połączy dwa kontenery uruchamiane przez doker-compose. Ten sam host na razie. – matanster

Odpowiedz

8

Compose stworzy default sieć dla Ciebie tak długo, jak korzystać z formatu wersji 2, ale jeśli chcesz, aby dostosować sieci docs tutaj:

Możesz utworzyć sekcję networks na najwyższym poziomie pliku tworzenia i powoływać się na nią w sekcji networks każdej z usług. Ale nie musisz, po prostu użyj domyślnej sieci, jak opisano w komentarzach poniżej.

+0

Nie jestem pewien, jaka byłaby nazwa hosta, z której powinna korzystać aplikacja, aby skontaktować się z drugą, w takiej domyślnej sieci (nazwa kontenera lub 'localhost' nie działa w tym celu). Moreso, żadna domyślnie utworzona sieć nie wyświetla się w 'docker network ls' po uruchomieniu' docker-compose up'. – matanster

+0

O ile niektóre dziwne obrazy/komponowanie pamięci podręcznej nie udaremnia moich różnych prób .. – matanster

+0

Jeśli użyjesz formatu wersji 2, utworzy on sieć o nazwie "nazwa_projektu_domyślności", gdzie nazwa projektu domyślnie odnosi się do nazwy głównej katalogu projektu. Używasz nazwy usługi jako nazwy hosta, z którą chcesz się połączyć. Tak więc w twoim przykładzie 'foo' i' bar'. – dnephin

Powiązane problemy