Руководство для начинающих по сети Docker

Здравствуйте, будущие мастера Docker! Я рад быть вашим проводником в этом увлекательном путешествии в мир сети Docker. Как someone, кто уже давно преподаёт информатику, я могу сказать, что понимание сети Docker похоже на обучение navigated по оживлённым улицам нового города - сначала это может показаться подавляющим, но как только вы поймёте это, вы начнёте передвигаться как местный житель в кратчайшие сроки!

Docker - Networking

Что такое сеть Docker?

Прежде чем мы углубимся в детали, давайте начнём с основ. Сеть Docker - это essentially то, как контейнеры Docker общаются друг с другом и с внешним миром. Представьте это как почтовую систему для ваших контейнеров - это то, как они отправляют и получают сообщения и данные.

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

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

Чтобы列出 все сети Docker, мы используем следующий простой команд:

docker network ls

Когда вы выполните эту команду, вы увидите вывод, аналогичный этому:

NETWORK ID     NAME      DRIVER    SCOPE
9f904ee27bf5   bridge    bridge    local
95e74588f40d   host      host      local
6dd90d006c9b   none      null      local

Давайте разберём это:

  • NETWORK ID: Уникальный идентификатор для каждой сети
  • NAME: Имя сети
  • DRIVER: Драйвер сети (мы поговорим о них позже)
  • SCOPE: Область действия сети (локальная для хоста Docker или кластера)

Осмотр сети Docker

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

Чтобы осмотреть сеть Docker, мы используем:

docker network inspect [NAME СЕТИ]

например, давайте осмотрим стандартную сеть 'bridge':

docker network inspect bridge

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

Создание собственной новой сети

Хорошо, теперь мы готовы построить свою own улицу! Создание новой сети в Docker überraschend просто:

docker network create [ОПЦИИ] [ИМЯ СЕТИ]

Давайте создадим простую сеть bridge:

docker network create my_awesome_network

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

Чтобы проверить, что наша сеть была создана, мы можем использовать наш проверенный docker network ls команд again:

docker network ls

Теперь вы должны увидеть свою новую сеть в списке!

Сетевые драйверы

В Docker сетевые драйверы resemble diferentes tipos de calles. Давайте рассмотрим основные типы:

Драйвер Описание
Bridge Стандартный сетевой драйвер. Подходит для автономных контейнеров, которым нужно общаться.
Host Удаляет сетевую изоляцию между контейнером и хостом Docker.
Overlay Используется для подключения нескольких демонов Docker. Подходит для сервисов swarm.
Macvlan Позволяет присвоить MAC-адрес контейнеру, делая его appear как физическое устройство в вашей сети.
None Отключает все сети для контейнера.

При создании сети вы можете указать драйвер. Например:

docker network create --driver overlay my_overlay_network

Это creates a new overlay network, что很好 для работы с Docker Swarm.

Подключение контейнеров к сетям

Теперь у нас есть сети, давайте узнаем, как подключить наши контейнеры к ним. Это как deciding, на какой улице должен быть наш дом (контейнер).

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

docker run --network=my_awesome_network nginx

Эта команда запускает контейнер nginx и подключает его к нашей 'my_awesome_network'.

Вы также можете подключить существующий контейнер к сети:

docker network connect my_awesome_network my_existing_container

А если вы хотите отключить контейнер от сети:

docker network disconnect my_awesome_network my_existing_container

Реальный пример

Давайте объединим всё это в практический пример. Представьте, что мы строим простое веб-приложение с фронтендом и бэкендом. Мы хотим, чтобы эти контейнеры могли общаться друг с другом, но не хотим expose бэкенд к внешнему миру.

Сначала создадим нашу сеть:

docker network create my_app_network

Теперь запустим наш бэкендный контейнер и подключим его к нашей сети:

docker run --name backend --network=my_app_network -d my-backend-image

И, наконец, наш фронтендный контейнер:

docker run --name frontend --network=my_app_network -p 80:80 -d my-frontend-image

Теперь наш фронтенд и бэкенд контейнеры могут communicate через 'my_app_network', но только фронтенд expose к внешнему миру на порту 80.

Заключение

И вот мы и добрались до конца, друзья! Мы прошли через основы сети Docker, от просмотра и осмотра сетей до их создания и подключения контейнеров. Помните, как и любое другое умение, овладение сетью Docker требует практики. Не бойтесь экспериментировать и try diferentes configuraciones.

Пока мы подытоживаем, я вспоминаю, как один из моих студентов сказал мне, что обучение сети Docker felt like learning to swim - сначала вы чувствуете, что тонете в информации, но как только это срабатывает, вы легко плывёте через концепции. Так что продолжайте плыть, и скоро вы будете делать заплывы в сетях Docker!

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

Credits: Image by storyset