0Pricing
Docker & DevOps Fundamentals · Урок

Основы сетевого взаимодействия контейнеров

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

«Основы сетевого взаимодействия контейнеров» — бесплатный урок Docker & DevOps Fundamentals на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Docker & DevOps Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Docker & DevOps Fundamentals содержит 4 уроков всего.

Зачем нужна сеть контейнеров?

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

Здесь и пригодится сеть Docker! Она позволяет контейнерам безопасно и эффективно взаимодействовать.

Основы сетевого взаимодействия контейнеров — иллюстрация 1

Сеть моста Docker по умолчанию

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

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

Просмотр сетей Docker

Вы можете легко просмотреть все доступные в системе сети Docker. Команда docker network ls выводит их список, а docker network inspect показывает подробную конфигурацию конкретной сети.

Попробуйте вывести список сетей:

docker network ls

IP-адреса контейнеров

Каждому контейнеру, подключённому к сети моста (по умолчанию или созданной пользователем), внутренний DNS-сервер Docker назначает уникальный IP-адрес.

Этот IP-адрес позволяет другим контейнерам в той же сети обращаться к нему. Давайте посмотрим IP-адрес контейнера:

docker run --rm -it alpine ip a

Взаимодействие в сети моста по умолчанию

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

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

Сети моста, созданные пользователем

Созданные пользователем сети моста имеют существенные преимущества перед сетью по умолчанию:

  • Автоматическое разрешение DNS: контейнеры в одной пользовательской сети могут находить друг друга по имени службы (имени контейнера).
  • Лучшая изоляция: они обеспечивают лучшую изоляцию приложений.
  • Гибкая настройка: вы получаете больше контроля над параметрами сети.

Демонстрация: взаимодействие по имени

Давайте создадим пользовательскую сеть, запустим в ней веб-сервер Nginx, а затем используем другой контейнер для доступа к серверу Nginx по его имени. Вы увидите, как это просто!

docker network create my-app-net
docker run -d --name webserver --network my-app-net nginx
docker run --rm --network my-app-net alpine sh -c "apk add curl && curl -s http://webserver"
docker rm -f webserver
docker network rm my-app-net

Открытие портов для хоста

Чтобы получить доступ к службе контейнера с хост-компьютера или из внешней сети, необходимо «опубликовать» или «сопоставить» её порт с помощью флага -p или --publish.

Например, -p 8080:80 сопоставляет порт 8080 хоста с портом 80 контейнера.

docker run -d --name my-webserver -p 8080:80 nginx
# To check, open http://localhost:8080 in your browser
# Then, clean up the container:
docker rm -f my-webserver

Другие сетевые драйверы

Помимо сетей моста, Docker предлагает другие сетевые драйверы для конкретных задач:

  • Host: контейнер использует сетевой стек хоста, теряя изоляцию.
  • None: у контейнера нет сетевых интерфейсов.
  • Overlay: используется в Docker Swarm для взаимодействия между несколькими службами Docker на разных хостах.

Каждый драйвер предназначен для определённых сценариев развёртывания.

Задача о сетях

Какие утверждения о сети Docker bridge по умолчанию и созданных пользователем сетях моста верны?

Итоги: основы сетевого взаимодействия

Мы рассмотрели основные сведения о сетях Docker:

  • Сеть bridge по умолчанию позволяет контейнерам взаимодействовать по IP-адресам.
  • Созданные пользователем сети моста предпочтительнее благодаря автоматическому разрешению DNS по имени и лучшей изоляции.
  • Мы узнали, как заставить контейнеры взаимодействовать друг с другом и как открыть порты контейнера для хоста.
  • Кратко рассмотрели другие сетевые драйверы, такие как host и overlay.

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

Часто задаваемые вопросы

Урок «Основы сетевого взаимодействия контейнеров» бесплатный?

Да — полный текст урока «Основы сетевого взаимодействия контейнеров» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Docker & DevOps Fundamentals, подпишись на CoddyKit PRO. Курс Docker & DevOps Fundamentals содержит 4 уроков всего.

Чему я научусь в уроке «Основы сетевого взаимодействия контейнеров»?

Разберитесь в стандартной сети Docker, мостовых сетях и способах обнаружения контейнерами друг друга. Ты практикуешь Docker & DevOps Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Docker & DevOps Fundamentals?

Предыдущий опыт не требуется. Docker & DevOps Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы сетевого взаимодействия контейнеров»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Docker & DevOps Fundamentals?

Да. Каждый урок Docker & DevOps Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы сетевого взаимодействия контейнеров
  2. Тома Docker для сохранения данных
  3. Монтирование каталогов и tmpfs
  4. Пользовательские мостовые сети и обнаружение служб
← Назад к Docker & DevOps Fundamentals