1.07M
Category: softwaresoftware

Docker network

1.

DOCKER NETWORK

2.

ВВОДНАЯ ИНФОРМАЦИЯ
СЕТЬ DOCKER ПОСТРОЕНА НА CONTAINER NETWORK MODEL (CNM), КОТОРАЯ ПОЗВОЛЯЕТ КОМУ УГОДНО СОЗДАТЬ
СВОЙ СОБСТВЕННЫЙ СЕТЕВОЙ ДРАЙВЕР. ТАКИМ ОБРАЗОМ, У КОНТЕЙНЕРОВ ЕСТЬ ДОСТУП К РАЗНЫМ ТИПАМ СЕТЕЙ
И ОНИ МОГУТ ПОДКЛЮЧАТЬСЯ К НЕСКОЛЬКИМ СЕТЯМ ОДНОВРЕМЕННО. ПОМИМО РАЗЛИЧНЫХ СТОРОННИХ
СЕТЕВЫХ ДРАЙВЕРОВ, У САМОГО DOCKER-А ЕСТЬ 4 ВСТРОЕННЫХ:
BRIDGE: В ЭТОЙ СЕТИ КОНТЕЙНЕРЫ ЗАПУСКАЮТСЯ ПО УМОЛЧАНИЮ. СВЯЗЬ УСТАНАВЛИВАЕТСЯ ЧЕРЕЗ BRIDGEИНТЕРФЕЙС НА ХОСТЕ. У КОНТЕЙНЕРОВ, КОТОРЫЕ ИСПОЛЬЗУЮТ ОДИНАКОВУЮ СЕТЬ, ЕСТЬ СВОЯ СОБСТВЕННАЯ
ПОДСЕТЬ, И ОНИ МОГУТ ПЕРЕДАВАТЬ ДАННЫЕ ДРУГ ДРУГУ ПО УМОЛЧАНИЮ.
HOST: ЭТОТ ДРАЙВЕР ДАЕТ КОНТЕЙНЕРУ ДОСТУП К СОБСТВЕННОМУ ПРОСТРАНСТВУ ХОСТА (КОНТЕЙНЕР БУДЕТ
ВИДЕТЬ И ИСПОЛЬЗОВАТЬ ТОТ ЖЕ ИНТЕРФЕЙС, ЧТО И ХОСТ).
MACVLAN: ЭТОТ ДРАЙВЕР ДАЕТ КОНТЕЙНЕРАМ ПРЯМОЙ ДОСТУП К ИНТЕРФЕЙСУ И СУБ-ИНТЕРФЕЙСУ (VLAN) ХОСТА.
ТАКЖЕ ОН РАЗРЕШАЕТ ТРАНКИНГ.
OVERLAY: ЭТОТ ДРАЙВЕР ПОЗВОЛЯЕТ СТРОИТЬ СЕТИ НА НЕСКОЛЬКИХ ХОСТАХ С DOCKER (ОБЫЧНО НА DOCKER
SWARM КЛАСТЕРЕ). У КОНТЕЙНЕРОВ ТАКЖЕ ЕСТЬ СВОИ АДРЕСА СЕТИ И ПОДСЕТИ, И ОНИ МОГУТ НАПРЯМУЮ
ОБМЕНИВАТЬСЯ ДАННЫМИ, ДАЖЕ ЕСЛИ ОНИ РАСПОЛАГАЮТСЯ ФИЗИЧЕСКИ НА РАЗНЫХ ХОСТАХ.

3.

BRIDGE СЕТИ
• САМЫЙ ПРОСТОЙ ТИП СЕТИ DOCKER — ЭТО МОСТОВАЯ СЕТЬ С ОДНИМ ХОСТОМ.
НАЗВАНИЕ ГОВОРИТ НАМ О ДВУХ ВЕЩАХ:
• СЕТЬ СУЩЕСТВУЕТ ТОЛЬКО НА ОДНОМ ХОСТЕ DOCKER И МОЖЕТ ПОДКЛЮЧАТЬСЯ ТОЛЬКО
К КОНТЕЙНЕРАМ, РАСПОЛОЖЕННЫМ НА ОДНОМ ХОСТЕ.
• BRIDGE СООБЩАЕТ НАМ, ЧТО ЭТО РЕАЛИЗАЦИЯ МОСТА 802.1D (КОММУТАТОР
КАНАЛЬНОГО УРОВНЯ).

4.

BRIDGE СЕТИ

5.

BRIDGE СЕТИ
• У КАЖДОГО ХОСТА DOCKER ПО УМОЛЧАНИЮ ЕСТЬ СЕТЬ ТИПА BRIDGE. К ЭТОЙ СЕТИ ПО
УМОЛЧАНИЮ ПОДКЛЮЧЕНЫ ВСЕ НОВЫЕ КОНТЕЙНЕРЫ, ЕСЛИ СЕТЬ НЕ ПЕРЕОПРЕДЕЛЕНА
ПРИ ЗАПУСКЕ КОНТЕЙНЕРА.

6.

7.

BRIDGE СЕТИ
• ДАВАЙТЕ ВОСПОЛЬЗУЕМСЯ КОМАНДОЙ docker network create, ЧТОБЫ СОЗДАТЬ
НОВУЮ МОСТОВУЮ СЕТЬ С ОДНИМ ХОСТОМ ПОД НАЗВАНИЕМ localnet.

8.

BRIDGE СЕТИ. ВНИМАНИЕ!
• СЕТЬ «BRIDGE» В LINUX НЕ ПОДДЕРЖИВАЕТ РАЗРЕШЕНИЕ ИМЕН ЧЕРЕЗ СЛУЖБУ DNS
DOCKER. ВСЕ ОСТАЛЬНЫЕ BRIDGE СЕТИ, СОЗДАВАЕМЫЕ ПОЛЬЗОВАТЕЛЕМ, ПОЗВОЛЯЮТ
ОБРАЩАТЬСЯ К КОНТЕЙНЕРАМ ПО НАЗВАНИЮ, НЕ ТОЛЬКО ПО IP-АДРЕСУ.

9.

10.

11.

ЗАДАНИЕ
• НАПИШИТЕ DOCKERFILE, ОСНОВЫВАЯСЬ НА ОБРАЗЕ UBUNTU, В КОТОРОМ ВЫ НА УЖЕ
СУЩЕСТВУЮЩИЙ ОБРАЗ UBUNTU УСТАНОВИТЕ СЛЕДУЮЩИЕ ПАКЕТЫ:
• iproute2
• iputils-ping
• СОБЕРИТЕ DOCKERFILE, ЗАПУСТИТЕ КОНТЕЙНЕР В ИНТЕРАКТИВНОМ РЕЖИМЕ И ВВЕДИТЕ
СЛЕДУЮЩИЕ КОМАНДЫ:
$ ip a
$ ping 8.8.8.8

12.

СЛЕДУЮЩЕЕ ЗАДАНИЕ
• СОЗДАЙТЕ СВОЮ СЕТЬ ТИПА BRIDGE.
• ОТКРОЙТЕ 2 ТЕРМИНАЛА, В КАЖДОМ ИЗ КОТОРЫХ ЗАПУСТИТЕ ПО КОНТЕЙНЕРУ ИЗ
СОБРАННОГО ОБРАЗА. ДОБАВЬТЕ ИХ В СОЗДАННУЮ СЕТЬ.
• ПРОВЕРЬТЕ IP АДРЕС КАЖДОГО КОНТЕЙНЕРА
• ПРОПИНГУЙТЕ СОСЕДНИЙ КОНТЕЙНЕР (ПО IP-АДРЕСУ И ПО НАЗВАНИЮ КОНТЕЙНЕРА)
• В ТРЕТЬЕМ ОКНЕ ТЕРМИНАЛА ПРОСМОТРИТЕ ВЫВОД КОМАНДЫ
$ docker network inspect network_name

13.

НЕМНОГО ПРО NETCAT
• КОМАНДА NC (NETCAT) СЛУЖИТ ДЛЯ ПЕРЕДАЧИ И ПОЛУЧЕНИЯ ДАННЫХ ПОСРЕДСТВОМ
ПРОТОКОЛОВ TCP И UDP. ОНА НЕ МОЖЕТ ПОХВАСТАТЬ БОЛЬШИМ НАБОРОМ ФУНКЦИЙ,
НО ПРИ ЭТОМ ЕЁ ДОСТАТОЧНО ДЛЯ ТОГО, ЧТОБЫ ПРОВЕРИТЬ СОЕДИНЕНИЕ И ПРОВЕСТИ
НЕСЛОЖНУЮ ОТЛАДКУ.

14.

НЕКОТОРЫЕ ФЛАГИ NETCAT
• -L – РЕЖИМ ПРОСЛУШИВАНИЯ. ИСПОЛЬЗУЕТСЯ С УКАЗАНИЕМ ПОРТА;
• -N – ЗАКРЫТЬ СОЕДИНЕНИЕ ПРИ ДОСТИЖЕНИИ КОНЦА ФАЙЛА ПРИ ЕГО ОТПРАВКЕ;
• -V – ПОДРОБНЫЙ РЕЖИМ. ИСПОЛЬЗУЕТСЯ ПРИ СКАНИРОВАНИИ ПОРТОВ;
• -W КОЛИЧЕСТВО_ПАКЕТОВ – ЗАКРЫТЬ СОЕДИНЕНИЕ ПОСЛЕ ПОЛУЧЕНИЯ ОПРЕДЕЛЁННОГО
КОЛИЧЕСТВА ПАКЕТОВ;
• -W ТАЙМЕР – ВКЛЮЧИТЬ ТАЙМЕР ДЛЯ ОГРАНИЧЕНИЯ ВРЕМЕНИ СОЕДИНЕНИЯ. ЗАДАЁТСЯ В
СЕКУНДАХ;
• -Z – ОТКЛЮЧИТЬ ОТПРАВКУ ДАННЫХ. ИСПОЛЬЗУЕТСЯ ПРИ СКАНИРОВАНИИ ПОРТОВ.

15.

НЕКОТОРЫЕ КОНСТРУКЦИИ NETCAT
• ДЛЯ ПРОСЛУШИВАНИЯ ПОРТА
$ nc -l номер_порта
• ДЛЯ ОТПРАВКИ ИНФОРМАЦИИ ПОЛУЧАТЕЛЮ:
$ nc ip-адрес_получателя порт_получателя
• ДЛЯ ЗАПИСИ ПРОСЛУШАННОЙ ИНФОРМАЦИИ В ФАЙЛ
$ nc -l порт_получателя > paste.txt
• ДЛЯ ОТПРАВКИ ФАЙЛА ЧЕРЕЗ NETCAT
$ nc -n ip-адрес_получателя порт_получателя < copy.txt

16.

ДОМАШНЕЕ ЗАДАНИЕ (ПОЛЕГЧЕ)
• ЗАПУСТИТЬ 2 КОНТЕЙНЕРА С NETCAT В ОДНОЙ BRIDGE DOCKER СЕТИ
• УЗНАТЬ IP-АДРЕСА КАЖДОГО ИЗ КОНТЕЙНЕРОВ
• НА ОДНОМ КОНТЕЙНЕРЕ ЗАПУСТИТЬ NETCAT В РЕЖИМЕ ПРОСЛУШИВАНИЯ
• НА ДРУГОМ КОНТЕЙНЕРЕ ЗАПУСТИТЬ NETCAT ДЛЯ ОТПРАВКИ ИНФОРМАЦИИ
• НАПИСАТЬ ИНФОРМАЦИЮ В ОДНОМ КОНТЕЙНЕРЕ И ПОЛУЧИТЬ ЕЁ В ДРУГОМ
КОНТЕЙНЕРЕ

17.

ДОМАШНЕЕ ЗАДАНИЕ (ПОСЛОЖНЕЕ)
• НАПИСАТЬ 2 BASH-СКРИПТА: ОДИН ДЛЯ ПРОСЛУШИВАНИЯ ИНФОРМАЦИИ NETCAT’ОМ,
ДРУГОЙ ДЛЯ ОТПРАВКИ ИНФОРМАЦИИ NETCAT’ОМ
• СОЗДАТЬ 2 ОБРАЗА, КАЖДЫЙ ИЗ КОТОРЫХ БУДЕТ ЗАПУСКАТЬ ОДИН ИЗ СКРИПТОВ ПРИ
ЗАПУСКЕ КОНТЕЙНЕРА
• ПРИНИМАЮЩИЙ КОНТЕЙНЕР ДОЛЖЕН ЗАПИСАТЬ ПОЛУЧЕННЫЕ ДАННЫЕ В ФАЙЛ,
КОТОРЫЙ ДОЛЖЕН ОКАЗАТЬСЯ НА ХОСТОВОЙ СИСТЕМЕ ПО ПОЛУЧЕНИИ ДАННЫХ ОТ
NETCAT.
English     Русский Rules