Поиск…


параметры

параметр подробности
tty:true В файле docker-compose.yml флаг tty: true сохраняет команду sh контейнера, ожидающую ввода.

замечания

Драйверы сети host и bridge могут подключать контейнеры на одном докере-хосте. Чтобы контейнеры могли общаться за пределами одной машины, создайте оверлейную сеть. Шаги по созданию сети зависят от того, как управляются хосты ваших докеров.

Докерная сеть

Контейнеры в одной докерной сети имеют доступ к открытым портам.

docker network create sample
docker run --net sample --name keys consul agent -server -client=0.0.0.0 -bootstrap

Консоль Dockerfile предоставляет 8500 , 8600 и еще несколько портов. Чтобы продемонстрировать, запустите другой контейнер в той же сети:

docker run --net sample -ti alpine sh
/ # wget -qO- keys:8500/v1/catalog/nodes

Здесь контейнер consul разрешен из keys , имя которого указано в первой команде. Докер обеспечивает разрешение DNS в этой сети, чтобы найти контейнеры по их --name .

Docker-Compose

Сети могут быть указаны в файле компоновки (v2). По умолчанию все контейнеры находятся в общей сети.

Начните с этого файла: 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

Запуск этого стека с помощью docker-compose up -d приведет к созданию сети с именем после родительского каталога, в данном случае example_default . Проверить с помощью docker network ls

 > docker network ls
NETWORK ID          NAME                    DRIVER              SCOPE
719eafa8690b        example_default         bridge              local

Подключитесь к альпийскому контейнеру, чтобы убедиться, что контейнеры могут разрешать и сообщать:

 > docker exec -ti example_test_1 sh
/ # nslookup keys
...
/ # wget -qO- keys:8500/v1/kv/?recurse
...

В составном файле могут быть networks: раздел верхнего уровня, чтобы указать сетевое имя, драйвер и другие параметры из команды сети докеров .

Контейнерная связь

Аргумент docker --link и link: разделы docker-compose делают псевдонимы для других контейнеров.

docker network create sample
docker run -d --net sample --name redis redis

При ссылке либо исходное имя, либо сопоставление разрешит контейнер 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

До 1.10.0 контейнера докеры 1.10.0 также устанавливаются сетевые подключения - поведение теперь обеспечивается сетью докеров. Ссылки в более поздних версиях обеспечивают только legacy сети моста по умолчанию.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow