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.

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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow