2 minute read

Durante estas semanas he tratado de incorporarme al trabajo que sea realiza en JdeRobots aprendiendo las técnicas de los contenedores Docker y familiarizándome con con el código de Unibotics.

Inicialmente he estado mirando tutoriales de Youtube para aprender lo más basico del uso de docker , desde su definición y usos mas populares hasta la creación de los mismo mediante Dockerfiles, creación de multi-contenedores creando redes que los interconectan y también con la ayuda de Docker-compose. Un pequeño glosario de ayuda con los comandos básicos e introducción a docker se encuentra en .

Ademas de aprender sobre docker he estado indagando en el código de manager.py y exercise.py de Unibotics, para entender como se comunican la web con el contenedor y que es lo que pasa en el fondo cuando launcheamos, corremos, cargamos empezamos etc. en la web.

Por otro lado he aprendido como funciona la tecnología VNC para compartir interfaces gráficas en la web. Para conseguirlo he utilizado los servidores y clientes que se usan en RoboticsAcademy.

VNC dentro de un docker

Para ejecutar un escritorio dentro de un browser deberemos tener instalados el servidor X (Xorg) y servidor y cliente VNC (x11vnc y noVNC respectivamente); lo cual tendremos previamente indicado en un Dockerfile que genererá la imagen docker que vamos a usar.

Ejecutaremos un contenedor de esta imagen (myubuntu) donde tendremos que indicar el puerto externo con el que se conecta al servidor (8081):

>> docker run -it --rm -p 8081:8081  --name ubuntu myubuntu

Dentro de este contendor ejecutaremos paso a paso los servidores y cliente vnc (podemos abrir varias terminales o ejecutarlos en background con ‘&’ al final de cada linea):

XSERVER:

Debemos indicar el DISPLAY del servidor X donde se enseñará la salida (:0)

>> /usr/bin/Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./xdummy.log -config /xorg.conf :0

VNC SERVER (x11vnc):

Introducimos el puerto interno donde se ejecuta el servidor (5900) y el DISPLAY donde está en servidor X(:0)

>> x11vnc -display :0 -nopw -forever -xkb -rfbport 5900

VNC CLIENT (noVNC):

Indicamos el puerto externo y el interno donde está el servidor vnc:

>> /noVNC/utils/novnc_proxy --listen 8081 --vnc localhost:5900

Visualizar el escritorio

Finalmente para acceder a la maquina nos dirigiremos en un browser a ‘localhost:8081’ y si dentro de nuestro docker comenzamos a ejecutar comandos con salida gráfica, estos apareceran en la pestaña simepre y cuando le indiquemos al comando el DISPLAY en el que hay que enseñar la salida gráfica. Para ello podemos escribir antes de cada comando el display específico: DISPLAY=:0 o hacer un source al display que vamos a usar para ahorrarnos indicar continuamente cual es la pantalla:

>> source DISPLAY=:0

Hola holaa esto es una priueba pa ver como va estoo . Esto es una palabrita dentro de un recuadrito: quepasa.

Lo siguiente es código ??

def print_hi(name)
  puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.

y por aqui dejo un link a youtube por ejemplo [link a youtube][youtube]