логотип PurpleSchool
логотип PurpleSchool

Zerotier для создания виртуальных сетей в Docker

Автор

Екатерина Смирнова

Введение

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

Zerotier позволяет создавать виртуальные сети, которые могут объединять устройства и контейнеры по всему миру, как если бы они находились в одной локальной сети. Это удивительный инструмент, который расширяет возможности сетевой связи в вашем Docker-окружении.

Настройка Zerotier

Установка Zerotier

Первый шаг для использования Zerotier в Docker — установить его на вашу систему. Давайте посмотрим на процесс установки для различных операционных систем.

Установка на Ubuntu

# Добавляем ключ репозитория Zerotier
curl -s https://install.zerotier.com | sudo bash

# Устанавливаем Zerotier
sudo apt install zerotier-one

Установка на MacOS

Для установки Zerotier на Mac вы можете воспользоваться командой Homebrew:

# Устанавливаем Zerotier через Homebrew
brew install --cask zerotier-one

Подключение к сети Zerotier

После установки вам нужно будет подключиться к существующей сети или создать новую. Zerotier предоставляет удобный веб-интерфейс для управления сетями.

  1. Зарегистрируйтесь на сайте my.zerotier.com и создайте новую сеть.
  2. Скопируйте идентификатор сети для подключения контейнеров и устройств.

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

# Присоединяемся к сети с заданным NETWORK_ID
sudo zerotier-cli join <NETWORK_ID>

Проверка подключения

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

# Выводим список сетей, к которым подключен Zerotier
sudo zerotier-cli listnetworks

Если все выполнено правильно, вы должны увидеть вашу сеть в списке подключенных сетей.

Использование Zerotier в Docker

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

Создание Docker контейнеров с Zerotier

Чтобы ваши Docker-контейнеры могли взаимодействовать через Zerotier, они должны подключаться к этой виртуальной сети. Одним из способов достижения этого является запуск Zerotier напрямую в контейнере.

Базовый Dockerfile

Создайте простой Dockerfile для настроек Zerotier в контейнере:

# Используем официальный образ Ubuntu
FROM ubuntu:20.04

# Устанавливаем зависимости
RUN apt-get update && apt-get install -y curl

# Устанавливаем Zerotier
RUN curl -s https://install.zerotier.com | bash

# Запуск Zerotier
ENTRYPOINT ["/usr/sbin/zerotier-one"]

Сборка и запуск

Соберите и запустите контейнер:

# Создаем Docker-образ
docker build -t my-zerotier-container .

# Запускаем контейнер
docker run -d --cap-add=NET_ADMIN my-zerotier-container

Не забудьте передать идентификатор сети контейнеру после запуска Zerotier.

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

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

Заключение

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

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile