🐳 Как соединить два контейнера по сети с помощью Docker-compose |

🐳 Как соединить два контейнера по сети с помощью Docker-compose

Мануал

Создание сетей – один из основополагающих аспектов работы с контейнерами в Docker.

Используя Docker Compose, вы можете легко соединить несколько контейнеров и управлять сложными приложениями, состоящими из нескольких сервисов.

В этой статье мы рассмотрим, как эффективно соединить два контейнера с помощью Docker Compose.

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

🐳 Защита паролей в Docker

Как соединить два контейнера с помощью Docker-Compose

ПОНИМАНИЕ СЕТЕВОГО ВЗАИМОДЕЙСТВИЯ В DOCKER

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

Подключение контейнеров с Docker Compose предполагает создание файла docker-compose.yml, в котором указываются сервисы и сеть, через которую они будут взаимодействовать.

Давайте погрузимся в настройку.

Пошаговые инструкции

Создайте файл docker-compose.yml

Начните с создания нового каталога и файла docker-compose.yml в нем.

mkdir my_project && cd my_project
touch docker-compose.yml

В этом файле определяются службы и сети для вашего приложения.

Определите сервисы

Откройте файл docker-compose.yml и определите сервисы, которые вы хотите подключить.

У вас есть два варианта сетевого взаимодействия: использовать явную сеть или позволить Docker создать сеть по умолчанию.

Вариант 1: Явная сеть

Этот метод дает вам больше контроля над сетевым взаимодействием за счет явного определения пользовательской сети с именем my_network.

version: '3'
services:
  web:
    image: nginx
    networks:
      - my_network
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    networks:
      - my_network
networks:
  my_network:

В этой настройке:

  • Явно создается пользовательская сеть my_network.
  • Службы web и db прикреплены к my_network.
  • Это изолирует службы от других контейнеров, если только они не добавлены в ту же сеть вручную.

🐳 Как лучше всего управлять правами для общих томов Docker?

Вариант 2: Сеть по умолчанию (создается автоматически)

Если вы не определили сеть, Docker Compose автоматически создаст сеть с именем your_project_default.

Контейнеры по-прежнему могут взаимодействовать, используя имена служб.

version: '3'
services:
  web:
    image: nginx
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

В этой установке:

  • Docker Compose автоматически создает сеть с именем your_project_default.
  • К этой сети по умолчанию подключены web и db.
  • Контейнеры по-прежнему могут взаимодействовать, используя имена служб (например, db).

Основные различия между явными сетями и сетями по умолчанию

Характеристика Явная сеть Сеть по умолчанию
Имя сети Определяется пользователем (например, my_network) Автоматически создается
Разрешение имени службы Да Да
Множественные сети Да (можно назначать службы для нескольких сетей) Нет (все службы находятся в одной сети по умолчанию)
Изоляция Да (только контейнеры в одной пользовательской сети могут взаимодействовать) Да (взаимодействуют только контейнеры в одном проекте)
Требуется ручная очистка? Да (сеть удаляется при остановке контейнеров) Да (сеть по умолчанию удаляется при остановке контейнеров)

Какой вариант выбрать?

  • Используйте явную сеть, если вам нужно более эффективное управление сетью, несколько сетей или изоляция служб.
  • Используйте сеть по умолчанию, если все службы должны автоматически взаимодействовать в рамках одного проекта без дополнительной настройки.

Запустите установку Docker Compose

Запустив файл docker-compose.yml, запустите свои сервисы с помощью следующей команды.

docker-compose up -d

Эта команда запустит ваши службы в отсоединенном режиме, позволяя им работать в фоновом режиме.

Проверка связи контейнеров: Чтобы проверить, могут ли контейнеры взаимодействовать, вы можете войти в веб-контейнер и выполнить ping контейнера базы данных, используя имя его службы.

docker exec -it my_project_web_1 /bin/bash

Затем запустите контейнер docker Inside:

root@container:/# apt update && apt install -y iputils-ping
root@container:/# ping db

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

Заключение

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

Используя сети Docker, вы можете гарантировать, что ваши сервисы логически сгруппированы и могут эффективно взаимодействовать друг с другом.

В этом руководстве приведен практический пример настройки базового соединения веб-службы и службы базы данных.

По мере создания более сложных приложений понимание этих концепций сетевого взаимодействия станет жизненно важным.

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий