Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

470
Vistas
Agregue xserver en el contenedor Docker (el host no tiene cabeza)

Estoy construyendo un contenedor Docker que tiene maven y algunas dependencias. Luego ejecuta un script dentro del contenedor. Parece que una de esas dependencias necesita un servidor X para funcionar. No se muestra nada en la pantalla, pero parece necesario y no se puede evitar.

Lo hice funcionar poniendo ENV DISPLAY=xxxx:0 en Dockerfile y se conecta al Xserver externo y funciona. Pero el punto es hacer un contenedor autosuficiente de Docker.

Entonces necesito agregar un Xserver a mi contenedor agregando Dockerfile lo necesario. Y quiero que Xserver solo sea accesible por el propio contenedor Docker y no externamente.

El FROM de mi Dockerfile es FROM ubuntu:15.04 y eso no se puede cambiar porque mi Dockerfile tiene muchas cosas que dependen de esa versión específica.

He leído una publicación sobre cómo conectarse desde el contenedor Docker a Xserver de la máquina host Docker, como esta . Pero como puse en el título de la pregunta, el host Docker no tiene cabeza y no tiene Xserver.

  • ¿Cuáles serían los paquetes mínimos apt-get para instalar en el contenedor para tener un Xserver?
  • Supongo que en mi Dockerfile se necesitará el entorno de visualización var como ENV DISPLAY=:0 . ¿Es esto correcto?
  • ¿Se necesita agregar algo más en el comando de docker run ?

Gracias.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede instalar y ejecutar un x11vnc dentro de su contenedor docker. Le mostraré cómo hacer que se ejecute en un host sin cabeza y conectarlo de forma remota para ejecutar aplicaciones X (por ejemplo, xterm).

archivo acoplable:

 FROM joprovost/docker-x11vnc RUN mkdir ~/.vnc && touch ~/.vnc/passwd RUN x11vnc -storepasswd "vncdocker" ~/.vnc/passwd EXPOSE 5900 CMD ["/usr/bin/x11vnc", "-forever", "-usepw", "-create"]

Y crea una docker image llamada vnc :

 docker build -t vnc .

Ejecute un contenedor y recuerde asignar el puerto 5900 al host para la conexión remota (estoy usando --net=host aquí):

 docker run -d --name=vnc --net=host vnc

Ahora tiene un contenedor en ejecución con x11vnc dentro, descargue un cliente vnc como realvnc e intente conectarse a <server_ip>:5900 desde local, la contraseña es vncdocker que está configurada en Dockerfile , llegará a la pantalla X remota con un xterm abierto. Si ejecuta env y encontrará la variable de entorno DISPLAY=:20

Vayamos al contenedor docker e intentemos abrir otro xterm :

 docker exec -it vnc bash

Luego ejecute el siguiente comando dentro del contenedor:

 DISPLAY=:20 xterm

Aparecerá una nueva ventana xterm en la ventana de su vnc client . Supongo que esa es la forma en que va a ejecutar su aplicación.

Nota :

  • La imagen base de vnc se basa en ubuntu 14 , pero supongo que el paquete es similar en ubuntu 16
  • No exponga 5900 si no desea una conexión remota

Espero que esto pueda ayudar :-)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda