Docker
Łączenie pojemników
Szukaj…
Parametry
Parametr | Detale |
---|---|
tty:true | W docker-compose.yml flaga tty: true utrzymuje polecenie sh kontenera w oczekiwaniu na dane wejściowe. |
Uwagi
Sterowniki sieciowe host
i bridge
mogą łączyć kontenery na jednym hoście dokera. Aby umożliwić kontenerom komunikację poza jednym komputerem, utwórz sieć nakładek. Kroki tworzenia sieci zależą od sposobu zarządzania hostami dokerów.
- Tryb roju:
docker network create --driver overlay
- doker / rój : wymaga zewnętrznego magazynu kluczy i wartości
Sieć doków
Kontenery w tej samej sieci dokerów mają dostęp do odsłoniętych portów.
docker network create sample
docker run --net sample --name keys consul agent -server -client=0.0.0.0 -bootstrap
Plik Docker Consul udostępnia 8500
, 8600
i kilka innych portów. Aby zademonstrować, uruchom inny kontener w tej samej sieci:
docker run --net sample -ti alpine sh
/ # wget -qO- keys:8500/v1/catalog/nodes
W tym przypadku kontener konsulowy jest usuwany z keys
, nazwa podana w pierwszym poleceniu. Docker zapewnia rozdzielczość dns w tej sieci, aby znaleźć kontenery według ich --name
.
Kompozycja dokująca
Sieci można określić w pliku tworzenia (v2). Domyślnie wszystkie kontenery znajdują się we wspólnej sieci.
Zacznij od tego pliku: example/docker-compose.yml
:
version: '2'
services:
keys:
image: consul
command: agent -server -client=0.0.0.0 -bootstrap
test:
image: alpine
tty: true
command: sh
Rozpoczęcie tego stosu od docker-compose up -d
utworzy sieć nazwaną na podstawie katalogu nadrzędnego, w tym przypadku example_default
. Sprawdź w docker network ls
> docker network ls
NETWORK ID NAME DRIVER SCOPE
719eafa8690b example_default bridge local
Połącz się z pojemnikiem alpejskim, aby sprawdzić, czy pojemniki mogą rozwiązać i komunikować się:
> docker exec -ti example_test_1 sh
/ # nslookup keys
...
/ # wget -qO- keys:8500/v1/kv/?recurse
...
Plik tworzenia może mieć sekcję Sieć networks:
najwyższy poziom, aby określić nazwę sieci, sterownik i inne opcje z polecenia sieci dokowania .
Łączenie kontenerów
Argument --link
i link:
--link
-compose tworzą aliasy do innych kontenerów.
docker network create sample
docker run -d --net sample --name redis redis
Z linkiem albo oryginalna nazwa, albo mapowanie rozwiąże kontener redis.
> docker run --net sample --link redis:cache -ti python:alpine sh -c "pip install redis && python"
>>> import redis
>>> r = redis.StrictRedis(host='cache')
>>> r.set('key', 'value')
True
Przed 1.10.0
łączenie kontenerów również konfigurowało łączność sieciową - zachowanie jest teraz zapewniane przez sieć dokerów. Łącza w późniejszych wersjach zapewniają efekt legacy
tylko w domyślnej sieci mostów.