Как создать пользовательскую мостовую сеть Docker

DockerBeginner
Практиковаться сейчас

Введение

Docker - это мощная платформа контейнеризации, которая позволяет упаковывать и развертывать приложения единообразно и воспроизводимо. Одна из ключевых функций Docker - это его сетевые возможности, в том числе возможность создания пользовательских мостовых сетей (custom bridge networks). В этом руководстве вы узнаете, как создать пользовательскую мостовую сеть Docker и подключить к ней контейнеры, обеспечивая безопасную и эффективную связь между компонентами вашего приложения.

Понимание мостовых сетей Docker

Контейнеры Docker разработаны так, чтобы быть легковесными и изолированными, но они все еще должны взаимодействовать друг с другом и с внешним миром. Docker предоставляет несколько сетевых опций для облегчения этого взаимодействия, одна из которых - это мостовая сеть Docker (Docker bridge network).

Мостовая сеть Docker - это виртуальная сеть, которая соединяет контейнеры Docker, запущенные на одном и том же хосте. Это тип сети по умолчанию для контейнеров Docker, и он позволяет контейнерам взаимодействовать друг с другом, используя их имена контейнеров или IP - адреса.

Когда вы запускаете новый контейнер Docker, он автоматически подключается к сети - мосту по умолчанию, которая называется bridge. Эта сеть создается Docker и управляется демоном Docker. Сеть bridge является хорошим выбором для простых сценариев использования, но у нее есть некоторые ограничения, например, невозможность легко подключать контейнеры на разных хостах.

Для преодоления этих ограничений вы можете создать пользовательскую мостовую сеть Docker. Пользовательская мостовая сеть имеет несколько преимуществ:

  1. Улучшенная изоляция: Контейнеры, подключенные к пользовательской мостовой сети, изолированы от контейнеров на сети - мосту по умолчанию bridge, что повышает безопасность и снижает риск непреднамеренных взаимодействий.
  2. Простое связывание контейнеров: Контейнеры на одной и той же пользовательской мостовой сети могут взаимодействовать друг с другом, используя их имена контейнеров, что облегчает настройку и управление взаимодействием между контейнерами.
  3. Сегментация сети: Пользовательские мостовые сети позволяют создавать отдельные сети для разных частей вашего приложения, что улучшает структуру сети и ее безопасность.
  4. Улучшенная масштабируемость: Пользовательские мостовые сети можно использовать для масштабирования вашего приложения, позволяя легко добавлять новые контейнеры в сеть.

Для создания пользовательской мостовой сети Docker вы можете использовать команду docker network create. После создания пользовательской сети вы можете подключить к ней контейнеры, используя флаг --network при запуске нового контейнера или подключив существующий контейнер к сети с помощью команды docker network connect.

graph LR
    A[Docker Host] --> B[Docker Daemon]
    B --> C[Default Bridge Network]
    B --> D[Custom Bridge Network]
    C --> E[Container 1]
    C --> F[Container 2]
    D --> G[Container 3]
    D --> H[Container 4]

На приведенной выше диаграмме мы видим сеть - мост по умолчанию bridge и пользовательскую мостовую сеть, созданную демоном Docker. Контейнеры 1 и 2 подключены к сети - мосту по умолчанию bridge, в то время как контейнеры 3 и 4 подключены к пользовательской мостовой сети.

Создание пользовательской мостовой сети Docker

Для создания пользовательской мостовой сети Docker вы можете использовать команду docker network create. Базовый синтаксис выглядит следующим образом:

docker network create [OPTIONS] NETWORK

Вот шаги по созданию пользовательской мостовой сети Docker:

Шаг 1: Создание пользовательской мостовой сети

Откройте терминал и выполните следующую команду для создания пользовательской мостовой сети с именем "my-custom-network":

docker network create my-custom-network

Это создаст новую мостовую сеть с настройками по умолчанию.

Шаг 2: Проверка создания сети

Вы можете вывести список всех доступных сетей Docker с помощью команды docker network ls:

docker network ls

В выводе должен быть новый мостовый сетевой интерфейс "my-custom-network".

Шаг 3: Настройка параметров сети (необязательно)

Вы можете настроить параметры сети, указав дополнительные параметры при создании сети. Например, чтобы создать сеть с определенной подсетью и шлюзом:

docker network create --subnet 172.18.0.0/16 --gateway 172.18.0.1 my-custom-network

Это создаст пользовательскую мостовую сеть с определенной подсетью и шлюзом.

Шаг 4: Просмотр параметров сети

Вы можете просмотреть параметры пользовательской сети с помощью команды docker network inspect:

docker network inspect my-custom-network

Это отобразит параметры сети, включая подсеть, шлюз и другие детали.

Создание пользовательской мостовой сети Docker позволяет повысить изоляцию, упорядочить и масштабировать приложения на основе Docker.

Подключение контейнеров к пользовательской сети

После создания пользовательской мостовой сети Docker вы можете подключить к ней контейнеры. Существует два способа сделать это:

1. Подключение контейнера при создании

При запуске нового контейнера вы можете указать флаг --network, чтобы подключить его к пользовательской сети. Например, чтобы запустить новый контейнер и подключить его к сети "my-custom-network":

docker run -d --name my-app --network my-custom-network nginx

Это запустит новый контейнер Nginx и подключит его к мостовой сети "my-custom-network".

2. Подключение существующего контейнера

Вы также можете подключить существующий контейнер к пользовательской сети с помощью команды docker network connect. Например, чтобы подключить существующий контейнер с именем "my-app" к сети "my-custom-network":

docker network connect my-custom-network my-app

После подключения контейнера к пользовательской сети вы можете получить доступ к нему из других контейнеров в той же сети, используя имя контейнера или его IP - адрес в рамках сети.

graph LR
    A[Docker Host] --> B[Docker Daemon]
    B --> C[Custom Bridge Network]
    C --> D[Container 1]
    C --> E[Container 2]
    C --> F[Container 3]

На приведенной выше диаграмме мы видим три контейнера, подключенных к пользовательской мостовой сети "my-custom-network". Эти контейнеры могут взаимодействовать друг с другом, используя имена контейнеров или IP - адреса в рамках сети.

Подключение контейнеров к пользовательской мостовой сети Docker позволяет повысить изоляцию, упорядочить и масштабировать приложения на основе Docker.

Резюме

В этом руководстве вы узнали, как создать пользовательскую мостовую сеть Docker, подключить к ней контейнеры и воспользоваться преимуществами использования пользовательской сети для своих приложений Docker. Понимая и реализуя пользовательские мостовые сети Docker, вы можете повысить безопасность, изоляцию и качество взаимодействия между контейнеризованными службами, что приведет к созданию более надежной и масштабируемой инфраструктуры на основе Docker.