Configurando el contenedor docker smokeping en Mikrotik

Desde RouterOS v7.5 mikrotik las maquinas virtuales x86 y routers con procesador arm son capaces de instalar contenedores de docker. En este artículo aprenderemos cómo preparar correctamente el router y cómo desplegar el contenedor en RouterOS.

En los routers mikrotik de nivel de entrada, la memoria de funcionamiento no es suficiente para que los contenedores de docker funcionen correctamente, instalaremos el contenedor de docker en el servidor virtual con el sistema RouterOS instalado. 

Preparación de RouterOS para instalar contenedores Docker

El soporte para contenedores Docker apareció en RouterOS 7.5, si la versión de su sistema operativo es más baja, debe actualizar a la última versión.

Si planea hacer esto en un router con memoria interna, es recomendable usar un almacenamiento externo como un USB formateado en ext4, para evitar así usar ciclos de escritura innecesarios de la memoria interna alargando así  la vida útil de esta. 

El conjunto estándar de complementos de RouterOS instalados no incluye el complemento de contenedor y, para agregarlo, debe ir al sitio web oficial de mikrotik y en la sección de software descargue el Extra packages de su arquitectura.

Para un RouterOS que está instalado en un VPS es X86.
Desempaque el archivo descargado y descargue el archivo llamado container-..npk a la raíz de su router. Después de descargar el archivo, reinicie la máquina virtual o el router (System – Reboot), el complemento se instalará automáticamente.

Después de reiniciar RouterOS, abra una nueva ventana de terminal y ejecute el siguiente comando que activa el modo contenedor

/system/device-mode/update container=yes

Después de ejecutar este comando, tendremos que reiniciar el router de nuevo siguiendo las instrucciones, tenemos 5 minutos para hacer esto. 
Después de reiniciar, aparecerá el  menu Container.

Configuración de la red para instalar un contenedor Docker

Para cada contenedor que se instalará en el sistema necesitamos crear una interfaz virtual VETH. Vaya a Interfaces – pestaña VETH.

Especifique el nombre de la interfaz, la dirección y la puerta de enlace.

También podrías agregar una interfaz a través del terminal realizarlo con el siguiente comando:

/interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1

Será necesario también crear una interfaz de puente (bridge)  para conectar el contenedor a la red.

Nombremos nuestro interfaz de puente como docker yendo al menu Bridge  y luego dándole al símbolo + para agregar la nueva interfaz puente.

Vamos a especificar la dirección IP del puente de la interfaz 172.17.0.1/24 yendo a IP – Adresses – añadir una nueva dirección 172.17.0.1/24 y asignarla a la interfaz de docker.

Vamos a añadir el puerto virtual veth1 al puente de docker.

Todas las acciones que hicimos anteriormente se pueden hacer con estos comandos en el terminal.

/interface/bridge/add name=docker
/ip/address/add address=172.17.0.1/24 interface=docker
/interface/bridge/port add bridge=docker interface=veth1 

 Configuremos la regla NAT para el tráfico saliente (IP – Firewall - Nat).

 Comando para agregar la regla NAT:

/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24 

Como ejemplo, instalaremos un contenedor docker de smokeping.

Instalación de smokeping en RouterOS

Para que el contenedor de smokeping funcione correctamente, se debe agregar la siguiente variable.

Vaya a ContainerEnvs y agregue esta variables: 

 TZ – especifique su zona horaria la puede obtener de esta web.

Si desea puede cambiar el parámetro value del siguiente comando para agregar la variable desde el terminal:

/container/envs/add list=smokeping_env key=TZ value="Europe/Prague"

Añade puntos de montaje para el contenedor. Vaya a la pestaña Mounts en Container y agregue 3 puntos:

 

smokeping_config en el que especificamos src=usb1-part1/config  dst=/config 

smokeping_data en el que especificamos src=usb1-part1/data dst=/data

smokeping_localtime en el que especificamos src=usb1-part1/localtime dst=/etc/localtime

Debe tener en cuenta que el directorio usb1-part1 puede ser diferente, en mi caso al conectar el pendrive formateado en ext4 que usare para almacenar el contener, es nombrado como usb1-part1 pero este nombre puede variar así que es probable que deba ajustar este valor.

Si quiere realizarlo desde el terminal este es un ejemplo de los comandos:

/container mounts
add dst=/data name=smokeping_data src=usb1-part1/data
add dst=/config name=smokeping_config src=usb1-part1/config
add dst=/etc/localtime name=smokeping_localtime src=usb1-part1/localtime

 

Para añadir la imagen necesitamos añadir la URL de búsqueda de los contenedores. Haga clic en Config y en el campo URL del Registro especifique https://registry-1.docker.io en los campos Tmp Dir usb1-part1/temp y Layer Dir usb1-part1/layer

El comando para el terminal seria: 

/container/config/set layer-dir=usb1-part1/layer registry-url=https://registry-1.docker.io tmpdir=usb1-part1/temp

 Todo está listo para instalar el contenedor así que podemos pasar a la creación del contenedor.

 

 En la pestaña Contenedor, haga clic en el botón + y complete los siguientes campos:

  • Remote Image docker.io/demon007/arm_smokeping
  • Interface veth1
  • Root dir /usb1-part1/smokeping
  • Mounts smokeping_data,smokeping_config,smokeping_localtime
  • Envlist smokeping_env
  • Name smokeping

Puede instalar un contenedor con un comando en el terminal:

/container/add envlists=smokeping_env remote-image=docker.io/demon007/arm_smokeping interface=veth1 mounts=smokeping_data,smokeping_config,smokeping_localtime name=smokeping root-dir=usb1-part1/smokeping workdir=/ 

Presione aplicar y esperar hasta que el contenedor esté cargado y el estado se detenga. Después de eso, podemos iniciar el contenedor presionando el botón Start.

Lo último que tenemos que hacer es reenviar el puerto de la interfaz web de Smokeping al puerto externo de nuestro servidor. Reemplace server_ip con la dirección IP de su router o servidor, y en las direcciones especifique la dirección IP que asignó al contenedor de docker y el puerto dst con el puerto que desea abrir para acceder al panel de estadísticas de Smokeping.

 /ip firewall nat
add action=dst-nat chain=dstnat dst-address=server_ip dst-port=8080 protocol=tcp to-addresses=172.17.0.2 to-ports=80

 

Después de eso, abra http://server_ip:8080 en su navegador y llegará al panel de estadísticas de Smokeping. 

Una configuración por defecto es parte de este contenedor. Para modificarlo, utilice un cliente SFTP (como filezilla, Cyberduck). La configuración se encuentra en el directorio que monto /config para este caso usb1-part1/config  

Detenga y vuelva a iniciar el contenedor después de modificar la configuración. 

Fuentes:

unixhost.pro

blog.ichasco.com

Comentarios