Контейнеры
Содержание
Контейнеры в RouterOS 7
Начиная с RouterOS 7.4, MikroTik поддерживает запуск OCI-совместимых контейнеров. Это позволяет запускать Docker-образы прямо на роутере — DNS-фильтры, мониторинг, прокси и другие сервисы.
Контейнеры доступны на устройствах с архитектурой ARM, ARM64 и x86. Необходим внешний накопитель (USB или microSD) для хранения данных.
Подготовка
# Шаг 1: Включить поддержку контейнеров
/system/device-mode/update container=yes
# Подтвердите физической кнопкой на устройстве, перезагрузите
# Шаг 2: Настроить реестр и хранилище
/container/config/set registry-url=https://registry-1.docker.io tmpdir=usb1/containers/tmp
# Шаг 3: Создать veth-интерфейс
/interface/veth/add name=veth-dns address=172.17.0.2/24 gateway=172.17.0.1
# Шаг 4: IP на шлюзовой стороне
/ip/address/add address=172.17.0.1/24 interface=veth-dns
# Шаг 5: NAT для контейнера (доступ в интернет)
/ip/firewall/nat/add chain=srcnat src-address=172.17.0.0/24 action=masqueradeRouterOS CLI
Сетевой стек контейнеров
Каждый контейнер использует veth-интерфейс — виртуальный Ethernet-адаптер. Варианты подключения:
| Режим | Описание | Когда использовать |
|---|---|---|
| veth + IP | Отдельная подсеть, NAT через роутер | Большинство случаев |
| veth + bridge | Контейнер в LAN-bridge | DHCP/DNS в LAN-сегменте |
| veth + VLAN | Контейнер в определённом VLAN | Изоляция по VLAN |
Пример: Pi-hole
# Переменные окружения
/container/envs
add name=pihole key=TZ value="Europe/Moscow"
add name=pihole key=WEBPASSWORD value="MyP@ss123"
add name=pihole key=DNSMASQ_LISTENING value="all"
# Монтирование для persistent-данных
/container/mounts
add name=pihole-etc src=usb1/pihole/etc dst=/etc/pihole
add name=pihole-dnsmasq src=usb1/pihole/dnsmasq dst=/etc/dnsmasq.d
# Создать и запустить контейнер
/container/add remote-image=pihole/pihole:latest interface=veth-dns root-dir=usb1/pihole/root envlist=pihole mounts=pihole-etc,pihole-dnsmasq start-on-boot=yes logging=yes
/container/start 0
# Перенаправить DNS на Pi-hole
/ip/firewall/nat/add chain=dstnat protocol=udp dst-port=53 in-interface=bridge-lan action=dst-nat to-addresses=172.17.0.2RouterOS CLI
Пример: AdGuard Home
/interface/veth/add name=veth-adguard address=172.17.0.3/24 gateway=172.17.0.1
/container/add remote-image=adguard/adguardhome:latest interface=veth-adguard root-dir=usb1/adguard start-on-boot=yes
# Веб-интерфейс: http://172.17.0.3:3000RouterOS CLI
Ограничения и рекомендации
- Минимум 256 MB RAM, рекомендовано 512+ MB
- Обязателен внешний накопитель (USB/SD) — NAND на устройстве слишком мал
- Нет поддержки docker-compose — каждый контейнер настраивается отдельно
- Нет bind mount для файлов (только директории)
- Перезагрузка контейнера при обновлении RouterOS
- Контейнеры не изолированы от хоста так же надёжно, как в полноценном Docker