¿Cómo ejecutar xeyes en Docker Ubuntu? [closed]

3 minutos de lectura

Mi objetivo es hacer el reenvío X11. El primer paso es asegurarse de que xeyes funcione. Sin embargo, cuando traté de ejecutar xeyes, arroja un error

El comando

(base) jason@Jasons-Mac-mini darkmark-docker-web % docker run -it --rm --net=host -e DISPLAY -v $HOME/.Xauthority:/root/.Xauthority  my-xeyes
Error: Can't open display: /private/tmp/com.apple.launchd.abcde/org.xquartz:0
FROM debian:latest
RUN apt-get update && apt-get install -y \
      x11-apps \
      && rm -rf /usr/share/doc/* && \
      rm -rf /usr/share/info/* && \
      rm -rf /tmp/* && \
      rm -rf /var/tmp/*

RUN useradd -ms /bin/bash user
USER user
CMD xeyes

Avatar de usuario de Mark Setchell
marca setchell

Puedo hacerlo de dos maneras. yo suelo alpine pero todavía se proporciona X11 a través de XQuartz.

Ambos métodos probados con:

  • macOS Ventura 13.1
  • Docker Escritorio 14.6.2
  • Cuarzo X 2.8.2

este necesita socat:

# Install socat and XQuartz
brew install socat
brew cask install xquartz

socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\" &

# Ensure XQuartz and docker are started - you can do this graphically too
open -a XQuartz
open -a docker

# Run alpine latest
docker run -it -e DISPLAY=host.docker.internal:0 alpine:latest

# Inside docker container. Install and run xeyes
/ # apk update && apk add xeyes && xeyes

Este no necesita socat:

# Start XQuartz - could equally do it with Spotlight Search
open -a XQuartz

Goto XQuartz->Settings->Security and check "Authenticate Connections" and "Allow connections from network clients"

Stop and restart XQuartz - wait till it is running

xhost + $(hostname)
MarkBookPro.local being added to access control list

# Start alpine image
docker run --rm  -e DISPLAY=host.docker.internal:0 -it alpine

# Inside docker container. Install and run xeyes
/ # apk update && apk add xeyes && xeyes

  • Probé la primera y la segunda solución. Ninguno de ellos funciona. La segunda solución arroja un error. (base) jason@Jasons-Mac-mini ~ % xhost +$(hostname) xhost: bad hostname "Jasons-Mac-mini.local"

    –Jason Rich Darmawan

    10 de febrero a las 5:05

  • En el segundo método, intente reemplazar el xhost comando con llanura xhost + Es una vulnerabilidad de seguridad, pero si solo está probando en su red doméstica local detrás de un enrutador, está bien.

    –Mark Setchell

    10 de febrero a las 7:22

  • ¿Sabes cómo permitir solo el contenedor docker? xhost + y DISPLAY=host.docker.internal:0 hace el trabajo. Pero nuevamente, tengo miedo de la vulnerabilidad de seguridad ya que uso el wifi de la oficina.

    –Jason Rich Darmawan

    10 de febrero a las 7:23

  • Puedes probar xhost + 127.0.0.1 que solo permite conexiones que se originan en su máquina local.

    –Mark Setchell

    10 de febrero a las 7:25


¿Ha sido útil esta solución?