Существует проект docker-routeros на github, который включает в себя образ Docker, на котором работает виртуальная машина MikroTik RouterOS в QEMU. Более подробное описание проекта есть у автора на habr.
Он предназначен для имитации среды MikroTik RouterOS, что делает его отличным инструментом для разработки и тестирования, особенно для тех, кто работает с API RouterOS.
Этот образ Docker особенно полезен для модульного тестирования библиотеки routeros-api-php, позволяя разработчикам тестировать приложения в контролируемой среде, которая максимально имитирует реальную настройку RouterOS.
Для примера есть и другие подобные проекты, например: im-ecorp/mikrotik-routeros, safrinnetwork/Auto-Install-MikroTik-CHR-on-Docker.
Извлечение образа из Docker Hub
Чтобы использовать образ непосредственно из Docker Hub, вы можете загрузить его и запустить контейнер, как показано ниже. Это запустит экземпляр RouterOS с настроенными портами для доступа по SSH, API, API-SSL и VNC.
docker pull evilfreelancer/docker-routeros
docker run -d -p 2222:22 -p 8728:8728 -p 8729:8729 -p 5900:5900 -ti evilfreelancer/docker-routeros
Использование в docker-compose.yml
Для тех, кто предпочитает docker-compose, ниже приведен пример конфигурации. Другие примеры находятся здесь.
version: "3.9"
services:
routeros:
image: evilfreelancer/docker-routeros:latest
restart: unless-stopped
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
- /dev/kvm
ports:
- "2222:22"
- "23:23"
- "80:80"
- "5900:5900"
- "8728:8728"
- "8729:8729"
Создание пользовательского Dockerfile
Вы можете легко создать свой собственный Dockerfile, чтобы включить пользовательские скрипты или конфигурации. Образ Docker поддерживает различные теги, которые перечислены здесь. По умолчанию, если тег не указан, используется тег latest
.
FROM evilfreelancer/docker-routeros
ADD ["your-scripts.sh", "/"]
RUN /your-scripts.sh
Построение из исходного кода
Если вы предпочитаете создавать образ Docker из исходного кода, приведенные ниже команды помогут вам клонировать репозиторий, создать образ и запустить контейнер RouterOS.
git clone https://github.com/EvilFreelancer/docker-routeros.git
cd docker-routeros
docker build . --tag ros
docker run -d -p 2222:22 -p 8728:8728 -p 8729:8729 -p 5900:5900 -ti ros
После запуска контейнера вы можете получить доступ к экземпляру RouterOS через VNC (порт 5900) и SSH (порт 2222).
Открытые Порты
В таблице ниже приведены порты, предоставляемые образом Docker для различных служб и протоколов, используемых RouterOS.
Описание | Порты |
---|---|
Значения по умолчанию | 21, 22, 23, 80, 443, 8291, 8728, 8729 |
IPSec | 50, 51, 500/udp, 4500/udp |
OpenVPN | 1194/tcp, 1194/udp |
L2TP | 1701 |
PPTP | 1723 |
Ссылки
Чтобы получить больше информации о Docker и технологиях виртуализации, связанных с RouterOS и сетями, ознакомьтесь со следующими ресурсами:
- Mikrotik RouterOS в Docker с использованием Qemu — статья на Habr, в которой приводится руководство по настройке Mikrotik RouterOS в Docker с использованием Qemu, идеально подходящее для разработчиков и сетевых инженеров, интересующихся виртуализацией RouterOS.
- Клиент RouterOS API — репозиторий GitHub для PHP-библиотеки RouterOS API, полезной для взаимодействия с устройствами MikroTik.
- VR Network Lab — проект для запуска сетевого оборудования в контейнерах Docker, рекомендуемый для моделирования RouterOS на производственном уровне.
- qemu-docker — ресурс для интеграции QEMU с Docker, позволяющий эмулировать виртуальные машины в контейнерах.
- QEMU/KVM в Docker — демонстрирует использование виртуализации QEMU/KVM в контейнерах Docker для повышения производительности.