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
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 llanuraxhost +
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 +
yDISPLAY=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