Mikrotik: Gestionar Containers Docker
Hoy os voy a mostrar como instalar Containers Docker bajo vuestro equipo Mikrotik, y así disponer de virtualización a nivel de sistema operativo dentro de vuestro propio router. En mi caso, lo voy a hacer sobre el Mikrotik RB5009, en la versión de firmware 7.14.3.
Para determinar qué paquete de contenedores específico necesitas descargar para un router MikroTik RB5009, es crucial identificar la arquitectura del CPU de tu dispositivo. El MikroTik RB5009 utiliza un procesador que pertenece a la arquitectura ARM, específicamente ARM 64 bits (aarch64).
Adelanto, que no puedes correr cualquier container Docker, y hay que tener en cuenta que tenemos nuestras limitaciones al ser un hardware con recursos limitados.
Pasos para descargar y cargar el paquete de Contenedores para MikroTik RB5009
- Visitar la Página de Descargas de MikroTik:
- Ve al sitio oficial de MikroTik en https://mikrotik.com/download.
- Seleccionar la Arquitectura Correcta:
- En la sección de descargas, ubica la categoría de ARM y selecciona el enlace para ARM 64 bits, que es adecuado para el RB5009, de “Extra packages“:
- Descargar el Paquete ‘Containers’:
- Dentro de la lista de descargas para ARM 64 bits, busca un archivo llamado algo similar a containers-X.Y.npk, donde X.Y es la versión de RouterOS que estás utilizando. Este archivo es el paquete que necesitas para habilitar la funcionalidad de contenedores en tu RB5009.
- Instalación:
- Después de descargar el archivo correcto, subes este archivo a tu MikroTik RB5009 utilizando WinBox o por FTP. Lo podéis hacer en el menú Files -> Seleccionar archivo:
-
- Reinicia el router para completar la instalación del paquete.
El paquete desaparece de Files y aparece el menú Containers en la parte inferior:
Por defecto, el modo del router es “Enterprise”, en este modo la característica container está deshabilitada:
https://help.mikrotik.com/docs/display/ROS/Device-mode
1 2 |
[admin@MikroTik] > /system/device-mode/print mode: enterprise |
Para habilitarla, tendremos que lanzar este comando y apagar en frío el router (quitando la corriente, por ejemplo):
1 2 3 |
[admin@Mikrotik] > /system/device-mode/update container=yes update: please activate by turning power off or pressing reset or mode button in 4m33s -- [Q quit|D dump|C-z pause] |
Al volver a revisar y el router se reinicie:
1 2 3 |
[admin@MikroTik] > /system/device-mode/print mode: enterprise container: yes |
Ejemplos para configurar y usar “Containers” en Mikrotik
Una vez que el paquete está instalado, puedes comenzar a configurar y usar contenedores Docker en tu MikroTik.
Configuramos el registro de Docker para que podamos descargar imágenes externas:
1 |
/container/config/set registry-url=https://registry-1.docker.io tmpdir=usb1/containers |
Ejemplo 1: Servidor web NGINX bajo Container Mikrotik
Supongamos que quieres ejecutar un servidor web NGINX básico dentro de un contenedor en tu MikroTik:
- Accede a la Terminal de RouterOS:
- Abre la terminal en WinBox o conéctate vía SSH.
- Crea una Red para el Contenedor (si es necesario):
- Ejemplo:
1234567/interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1# Creamos un BRIDGE/interface/bridge/add name=containers/ip/address/add address=172.17.0.1/24 interface=containers/interface/bridge/port add bridge=containers interface=veth1# REGLA NAT PARA SALIDA A INTERNET/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24
- Ejemplo:
- Ejecuta el Contenedor NGINX:
- Utiliza el comando:
1 2 |
/container add hostname=nginx-container remote-image=nginx:latest interface=veth1 root-dir=usb1/containers/nginx /container start numbers=0 |
Ejemplo 2: Ejecutar un Contenedor de Base de Datos bajo Container Mikrotik (MariaDB)
Si necesitas ejecutar una base de datos MariaDB para un proyecto:
- Configura la Red:
- Podéis seguir el ejemplo de nginx, cambiando el nombre “db-net” o reutilizáis “veth1”. También podéis usar la misma red que el resto de la red (algo no muy recomendado en todos los casos), como es en mi caso “bridgeLocal”
- Ejecuta el Contenedor MariaDB:
- Ejemplo:
1 2 |
/container add hostname=mariadb-container remote-image=mariadb/mariadb:latest interface=veth1 env="MYSQL_ROOT_PASSWORD=my-secret-pw" root-dir=usb1/containers/mariadb /container start number=1 |
Ejemplo 3: Sistema de Monitoreo de Red bajo Container Mikrotik (Prometheus y Grafana)
Para los administradores de red que necesitan herramientas de monitoreo avanzado, ejecutar Prometheus para la recolección de métricas y Grafana para la visualización dentro de contenedores puede ser una solución eficiente.
1 2 3 4 5 |
/container add hostname=prometheus remote-image=prom/prometheus interface=veth1 root-dir=usb1/containers/prometheus /container start number=2 /container add hostname=grafana remote-image=grafana/grafana interface=veth1 ports=3000:3000 root-dir=usb1/containers/grafana /container start number=3 |
Esto configura Prometheus para recoger métricas y Grafana para visualizar esas métricas en el puerto 3000.
Ejemplo 3: Servidor VPN bajo Container Mikrotik (OpenVPN)
Si bien MikroTik tiene capacidades VPN incorporadas, usar un contenedor puede ofrecer más flexibilidad o características específicas que no están disponibles de otra manera.
1 2 |
/container add hostname=openvpn-server remote-image=kylemanna/openvpn interface=veth1 ports=1194:1194/udp root-dir=usb1/containers/openvpn /container start number=4 |
Este comando configura un servidor OpenVPN en el contenedor, exponiendo el puerto UDP 1194.
Ejemplo 4: Servidor Archivos en la Nube bajo Container Mikrotik (NextCloud)
Nextcloud permite crear tu propia nube personalizada para almacenamiento de archivos, calendarios y más, todo alojado directamente en tu MikroTik.
1 2 |
/container add hostname=nextcloud remote-image=nextcloud/nextcloud:latest interface=veth1 ports=8080:80 root-dir=usb1/containers/nextcloud /container start number=5 |
Este comando configura un servidor Nextcloud accesible en el puerto 8080.
Monitorear y Gestionar Contenedores en Mikrotik
- Listar Contenedores:
- Usa
/container print
para ver todos los contenedores y su estado.
- Usa
- Detener y Eliminar Contenedores:
- Detener:
/container stop [name]
- Eliminar:
/container remove [name]
- Detener:
Consideraciones Adicionales
- Seguridad: Asegúrate de manejar la seguridad de los contenedores correctamente, especialmente si están expuestos a la red. Mantén los contenedores actualizados y configura adecuadamente las políticas de seguridad para proteger tu red.
- Recursos: Los contenedores pueden consumir recursos significativos del sistema. Monitorea el uso de CPU y memoria para asegurar que el rendimiento del router no se vea comprometido.
- Compatibilidad: No todos los modelos de MikroTik pueden soportar el paquete “Containers”, especialmente modelos con limitaciones de hardware.
Al seguir estos pasos, puedes expandir significativamente la funcionalidad de tu dispositivo MikroTik al integrar aplicaciones y servicios basados en contenedores en tu infraestructura de red, sin necesidad de instalar hardware adicional.
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?