MikroTik и Docker, установка и запуск контейнера на RouterOS

Mikrotik docker
Статья предлагает методику развертывания Docker‑контейнера на маршрутизаторе MikroTik. Для контейнера задаются собственные переменные среды. Создаётся отдельный том для постоянного хранения данных. Открываются порты, обеспечивающие доступ из локальной сети. Конфигурация близка к подходу Docker Compose. Аппаратная база исследования — MikroTik hAP ax2. В контейнере запускается DNS‑сервер Pi‑hole. На его примере показан способ блокировки нежелательных ресурсов на уровне DNS.
РЕКОМЕНДАЦИЯ
Наша команда советует изучить углубленный курс по администрированию сетевых устройств MikroTik.
В курсе много лабораторных работ по итогам которых вы получите обратную связь.
После обучения вы получите диплом гос. образца РФ. Подробности и доступ к началу курса бесплатно тут.
Программная платформа Docker предназначена для ускорения разработки, тестирования и внедрения программных продуктов. Приложение инкапсулируется в унифицированный контейнер. Контейнер включает библиотеки, системные утилиты, исходный код и среду выполнения. Такой подход упрощает развертывание и масштабирование решений в любой вычислительной среде и гарантирует воспроизводимость их работы.
docker
Pi‑hole — программный инструмент сетевого уровня, предназначенный для блокирования рекламных материалов и интернет‑трекеров в среде Linux. Система работает как DNS‑sinkhole и, при необходимости, выполняет функции DHCP‑сервера, ориентированного на внутренние сети. Решение оптимизировано для маломощных встраиваемых устройств, например Raspberry Pi, однако может быть развернуто на любой Linux‑платформе.
Решение Pi‑hole обеспечивает блокирование стандартных рекламных блоков веб‑сайтов. Дополнительно система отсекает объявления в нетипичных средах, включая интерфейсы смарт‑телевизоров и мобильных операционных систем.
pi-hole
Настройка Docker на роутере MikroTik
Для специалистов, ежедневно применяющих Docker, запуск контейнеров непосредственно на маршрутизаторе MikroTik является существенным преимуществом. Решение позволяет размещать полноценные сервисы или эмулировать работу Docker Compose. Контейнеры объединяются в единый мост (Bridge); внутрь можно добавлять конфигурационные файлы или подключать постоянные тома (volumes).
На маршрутизаторе MikroTik с поддержкой Docker возможно размещать небольшие веб‑приложения, например WordPress или Nextcloud. Также допускается запуск прокси‑серверов Nginx и других программ, предназначенных для дистрибутивов Linux, включая Ubuntu и CentOS.
Поддержка Docker интегрирована в RouterOS, начиная с версии 7.5. Если установлен более ранний выпуск, требуется обновление системы. В тестовой среде используется RouterOS 7.12.
Установка пакета Container
Алгоритм включает четыре этапа:
  1. Открыть официальный сайт MikroTik и перейти во вкладку Software.
  2. Загрузить пакет Extra packages, соответствующий архитектуре процессора устройства (например, x86).
  3. Передать файл Container на маршрутизатор и перезагрузить его.
  4. В параметрах RouterOS активировать подсистему Docker.
настройка docker в mikrotik скачать extra packages
Настройка выполняется через раздел Files.
mikrotik установить новый пакет
Активация Docker увеличивает поверхность атаки RouterOS. Поэтому рекомендуется воздержаться от использования контейнеризации на маршрутизаторах MikroTik. Для снижения рисков процесс включения усложнён: пакет Container устанавливается только при физическом доступе к устройству.
Включить Docker в MikroTik
Для выполнения настроек используется раздел Terminal.
/system/device-mode
update container=yes
включить использование контейнеров
Далее маршрутизатор MikroTik перезагружается: выполняется жёсткое отключение‑включение питания либо, в течение пяти минут, единожды нажимается кнопка Mode на корпусе устройства.
Проверить статус включения Docker
/system/device-mode
print
проверить активность пакета container
Добавить Veth интерфейс
Конфигурация выполняется через меню Interfaces → VETH.
добавим veth интерфейс
/interface veth
add address=192.168.254.2/24 gateway=192.168.254.1 gateway6="" name=Veth-Pihole
где Gatewayэто будущий IP адрес Bridge с VETH интерфейсом.
Добавить Bridge для Docker
Конфигурация выполняется через меню Bridge → Bridge.
mikrotik создаем bridge
Настройка находится Bridge→Ports
добавим veth в bridge
Переходим в IP→Addresses
задать ip адрес для bridge
/interface bridge
add admin-mac=02:F1:38:46:46:E2 auto-mac=no name=Bridge-Docker
/interface bridge port
add bridge=Bridge-Docker interface=Veth-Pihole
/ip address
add address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254.0
Включить NAT для Docker
Изменения выполняются в разделе IP → Firewall → NAT.
правило nat вкладка general
правило nat вкладка action
/ip firewall nat
add action=masquerade chain=srcnat src-address=192.168.254.0/24
Добавить переменные окружения(env) для Docker
Настройка находится Containers→Envs
добавим env
/container envs
add key=TZ name=pihole_env value=Europe/Kyiv
add key=WEBPASSWORD name=pihole_env value=10203040
add key=DNSMASQ_USER name=pihole_env value=root
Смонтировать том(volume) в Docker
Конфигурация выполняется через меню Containers → Mounts.
смонтируем папку
/container mounts
add dst=/etc/pihole name=etc_pihole src=/slot1/etc
add dst=/etc/dnsmasq.d name=dnsmasq_pihole src=/slot1/etc-dnsmasq.d
Общие настройки Docker
Конфигурационные параметры задаются в меню Containers → Config.
docker общие настройки
/container config
set registry-url=https://registry-1.docker.io tmpdir=/slot1/pull
Запуск Docker контейнера
Настройка находится Containers
запуск контейнера
/container
add remote-image=pihole/pihole:latest interface=Veth-Pihole root-dir=/slot1/pihole mounts=dnsmasq_pihole,etc_pihole envlist=pihole_env
После создания нового Docker‑контейнера в MikroTik автоматически загружается образ, выполняется его распаковка, и экземпляр переводится в состояние stopped. Для его активации необходимо однократно нажать кнопку Start. При успешном запуске рабочий статус контейнера изменится на running.
Проброс порта для Docker
Параметры конфигурируются в разделе IP → Firewall → NAT.
mikrotik проброс порта
mikrotik проброс 80 порта
/ip firewall nat
add action=dst-nat chain=dstnat dst-address=192.168.5.254 dst-port=8080 \
protocol=tcp to-addresses=192.168.254.2 to-ports=80
Настройка Pi-hole в MikroTik Docker
Для входа в веб‑интерфейс Pi‑hole перейдите по адресу http://192.168.5.254:8080/admin и укажите учётные данные, заранее заданные в разделе Containers → Envs при конфигурации пакета Container.
192.168.5.254 это IP адрес MikroTik.
mikrotik авторизация
Настроить Pi-hole как сервер DNS
использвоать как dns server
В тестовой среде Pi‑hole будет применяться в качестве DNS‑сервера лишь для одного компьютера.
Разрешить DNS запросы в Docker
Необходимая конфигурация выполняется через меню IP → Firewall → NAT.
настройка проброса dns запросов
пробросим dns запросы в docker
/ip firewall nat
add action=dst-nat chain=dstnat dst-address=192.168.5.254 dst-port=53 \
protocol=udp to-addresses=192.168.254.2
Ошибка Pi-hole
После назначения Pi‑hole DNS‑сервером запросы перестали обрабатываться. В системном журнале фиксировалась ошибка «Ignoring query from non‑local network». Ситуация устраняется активацией параметра «Permit all origins».
разрешить запросы с других сетей
Заблокировать сайт youtube.com в MikroTik
добавить блокировку сайтов
Результат блокировка сайта в MikroTik
результат блокировки сайта
Следует отметить, что отклик системы остаётся быстрым. Pi‑hole служит не только средством блокировки ресурсов на маршрутизаторе MikroTik, но и инструментом снижения трафика и экономии времени за счёт фильтрации рекламного контента.
РЕКОМЕНДАЦИЯ
Вы хорошо разбираетесь в Микротиках? Или впервые недавно столкнулись с этим оборудованием и не знаете, с какой стороны к нему подступиться? В обоих случаях вы найдете для себя полезную информацию в углубленном курсе «Администрирование сетевых устройств MikroTik». В курсе много практических лабораторных работ по результату выполнения которых вы получите обратную связь. После окончания обучения вы получите диплом гос. образца РФ. Подробности и доступ к началу курса бесплатно тут.