Демистифицируем Docker Compose: настройка пользовательских подсетей сети

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

Метод 1: определение пользовательской подсети сети в Docker Compose YAML
Чтобы настроить пользовательскую сетевую подсеть в Docker Compose, вы можете определить сетевой блок в своем файле YAML и указать диапазон подсети, используя нотацию CIDR. Вот пример:

version: "3.9"
services:
  myapp:
    image: myapp:latest
    networks:
      mynetwork:
        ipv4_address: 172.20.0.2
networks:
  mynetwork:
    ipam:
      config:
        - subnet: 172.20.0.0/16

В приведенном выше примере мы определяем сеть под названием «mynetwork» с диапазоном подсетей 172.20.0.0/16. Свойство «ipv4_address» внутри сервисного блока назначает контейнеру определенный IP-адрес.

Метод 2. Использование команды Docker Network Create.
Другой способ настройки пользовательской подсети — использование Docker CLI. Вы можете создать сеть с определенным диапазоном подсетей, используя следующую команду:

docker network create --subnet=172.20.0.0/16 mynetwork

Эта команда создает сеть с именем «mynetwork» с диапазоном подсетей 172.20.0.0/16.

Метод 3: настройка псевдонимов подсетей
Если вы хотите назначить несколько подсетей одной сети, вы можете использовать псевдонимы подсетей. Это может быть полезно, когда вам нужно сегментировать контейнеры на разные подсети в зависимости от их функциональности. Вот пример:

version: "3.9"
services:
  myapp1:
    image: myapp1:latest
    networks:
      mynetwork:
        ipv4_address: 172.20.0.2
  myapp2:
    image: myapp2:latest
    networks:
      mynetwork:
        ipv4_address: 172.30.0.2
networks:
  mynetwork:
    ipam:
      config:
        - subnet: 172.20.0.0/16
        - subnet: 172.30.0.0/16

В этом примере мы определяем две службы: «myapp1» и «myapp2», каждая из которых назначена отдельной подсети в сети «mynetwork».

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