- Установка и использование Docker Compose на Fedora 29 / Fedora 28
- Как установить Docker в CentOS
- Как установить Docker и запустить Docker контейнеры в Ubuntu
Объяснение работы сетей в контейнарах Docker
Все перечисленные ниже команды протестированы с правами root в Ubuntu.
Для управления сетевыми операциями, такими как создание новой сети, подключение контейнера к сети, отключение контейнера от сети, перечисление доступных сетей, удаление сетей и т. д., мы используем следующую команду:
# docker network

Типы сетевых драйверов Docker
Чтобы получить список всех ваших сетей, запустите:
# docker network ls

- Bridge network при запуске Docker автоматически создается сеть типа мост по умолчанию. Недавно запущенные контейнеры будут автоматически подключаться к нему. Вы также можете создавать пользовательские настраиваемые мостовые сети. Пользовательские мостовые сети превосходят сетевые мосты по умолчанию.
- Host network : удаляет сетевую изоляцию между контейнером и хостом Docker и напрямую использует сеть хоста. Если вы запускаете контейнер, который привязывается к порту 80, и вы используете хост-сеть, приложение контейнера доступно через порт 80 по IP-адресу хоста. Означает, что вы не сможете запускать несколько веб-контейнеров на одном хосте, на одном и том же порту, так как порт теперь является общим для всех контейнеров в сети хоста.
- None network : в сети такого типа контейнеры не подключены ни к одной сети и не имеют доступа к внешней сети или другим контейнерам. Итак, эта сеть используется, когда вы хотите полностью отключить сетевой стек в контейнере.
- Overlay network : Создает внутреннюю частную сеть, которая охватывает все узлы, участвующие в кластере swarm. Таким образом, оверлейные сети облегчают обмен данными между сервисом Docker Swarm и автономным контейнером или между двумя автономными контейнерами на разных демонах Docker.
- Macvlan network : Некоторые приложения, особенно устаревшие приложения, отслеживающие сетевой трафик, ожидают прямого подключения к физической сети. В такой ситуации вы можете использовать сетевой драйвер Macvlan для назначения MAC-адреса виртуальному сетевому интерфейсу каждого контейнера, что делает его физическим сетевым интерфейсом, напрямую подключенным к физической сети.
Сеть типа bridge
Я буду использовать два Alpine-контейнера для объяснения этого типа сети.
Теперь я собираюсь запустить два контейнера Alpine, а именно C1 и C2, используя команды:
# docker run -it -d --name c1 alpine ash
# docker run -it -d --name c2 alpine ash
Далее, давайте выясним IP-адрес этих запущенных контейнеров. Для этого запустите:
# docker exec -it c1 sh –c “ip a”
# docker exec -it c2 sh –c “ip a”

Как видите, IP-адрес контейнера C1 – 172.17.0.2, а IP-адрес C2 – 172.17.0.3.
Теперь давайте продолжим и попытаемся проверить связь друг с другом, чтобы убедиться, что они могут общаться.
# docker attach c1
# Ping –c 2 172.17.0.3

Как вы можете видеть на скриншотах, показанных выше, происходит конекшен между контейнерами в одной сети.
Мы также можем проверить это, проверив сеть типа мост с помощью команды:
# docker network inspect bridge

1.1 Создание пользовательской Bridge сети
Как я уже говорил, при запуске Docker автоматически создается сеть bridge по умолчанию.
Все вновь запущенные контейнеры будут автоматически подключаться к ней.
Однако вы также можете создавать пользовательские мостовые сети.
Чтобы создать новый сетевой драйвер, просто запустите:
# docker network create my_net
# docker network create --driver bridge dhruv_net

Эта возможность называется автоматическим обнаружением службы.
Чтобы убедиться, что контейнеры могут взаимодействовать друг с другом, давайте запустим три alpine контейнера, а именно A1, A2 и A3 в сети dhruv_net, которую мы создали ранее.
# docker run -it -d --name A1 --network dhruv_net alpine ash
# docker run -it -d --name A2 --network dhruv_net alpine ash
# docker run -it -d --name A3 --network dhruv_net alpine ash

2. Хостовая Сеть
Мы запускаем контейнер, который привязывается к порту 80, используя хост-сеть, приложение контейнера доступно через порт 80 по IP-адресу хоста.
5 комментариев
как связаться с автором статьи?
А какой вопрос?
прочитал на одном дыхании. Автор приятно объясняет.
Всегда рады! Спасибо
Это просто плохой перевод. Ссылка на оригинал не помешала бы.