Hola, en este post quiero comentarles como pueden correr una GUI en docker. Para ello utilizaremos el siguiente dockerfile
FROM centos
RUNyum install -y xeyes
CMD["/usr/bin/xeyes"]
En este Dockerfile estamos utilizando como imagen base centos (una distribucion de linux), y luego con yum instalamos nuestra GUI llamada xeyes. Finalmente docker ejecutará el gui.
Para buildear esta imagen, en el terminal, nos dirigimos hacia la carpeta donde guardamos el dockerfile y creamos una imagen llamada centos:
sudo docker build -t gui-app .
Corremos nuestro os que contiene nuestra GUI con el siguiente comando:
sudo docker run --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" gui-app
Aquí viene lo interesante, el flag --env define una variable en nuestro contenedor que coincide con nuestra variable DISPLAY en el host, luego con --volume estamos duplicando nuestro pase para conectarse al display (el archivo .Xauthority) a nuestro contenedor, es decir, nuestro contenedor tendrá las mismas credenciales que nosotros para conectarse al display.
Pero que es un servidor X ?
El servidor X es el sistema que utiliza unix para definir el comportamiento y la interacción del display, mouse, teclado, etc. Es decir, es un framework para trabajar en ambientes graficos. .
Fuente: https://medium.com/@SaravSun/running-gui-applications-inside-docker-containers-83d65c0db110