Ich habe ein einfaches Docker Bild erstellt, das SSH + xeyes enthält. Ich führe diesen Container aus, verbinde mich per SSH mit X11 Forwarding mit dem Container und möchte xeyes anzeigen können.Gleiches Docker Bild vor X11 einen Host, aber nicht auf einem anderen
Ich habe gebaut und die Docker-Container auf Host A laufen, wenn ich mit dem Behälter verbinden, es funktioniert nichtError: Can't open display:
Ich habe zu bauen und den Docker-Container auf einen anderen Host laufen, B. Und es wirkt wie ein Zauber.
Ich verstehe nicht den Unterschied ...
Mein Dockerfile:
FROM ubuntu:16.04
ENV SSH_PASSWORD "rootpass"
RUN apt-get update
RUN apt-get install -qqy x11-apps openssh-server ssh
# Install SSH access
RUN mkdir /var/run/sshd
RUN echo "root:$SSH_PASSWORD" | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed '[email protected]\s*required\s*[email protected] optional [email protected]' -i /etc/pam.d/sshd
CMD [ "/usr/sbin/sshd", "-D" ]
EXPOSE 22
Auf Host A und B, das tue ich:
- Erstellen Sie das Bild mit
docker build -t myeyes .
- Führen Sie den Container mit:
docker run -d -p 7222:22 --name myeyes myeyes
.
Dann von einem anderen Host C, ich xhost +
und ich versuche, diese Behälter:
Es nicht für den Behälter auf A:
$ ssh -X -p 7222 [email protected]
...
# env | grep DISPLAY
# xeyes
Error: Can't open display:
# grep X11Forward /etc/ssh/sshd_config
X11Forwarding yes
# ls -al
-rw------- 1 root root 180 Sep 29 09:32 .bash_history
-rw-r--r-- 1 root root 3106 Oct 22 2015 .bashrc
drwx------ 2 root root 4096 Sep 29 09:04 .cache
-rw-r--r-- 1 root root 148 Aug 17 2015 .profile
Es für den Behälter funktioniert auf B:
$ ssh -X -p 7222 [email protected]
...
# env | grep DISPLAY
DISPLAY=localhost:10.0
# grep X11Forward /etc/ssh/sshd_config
X11Forwarding yes
# ls -al
-rw------- 1 root root 58 Sep 29 09:34 .Xauthority
-rw------- 1 root root 59 Sep 29 09:33 .bash_history
-rw-r--r-- 1 root root 3106 Oct 22 2015 .bashrc
drwx------ 2 root root 4096 Sep 29 09:21 .cache
-rw-r--r-- 1 root root 148 Aug 17 2015 .profile
# cat .Xauthority
...
MAGIC COOKIE
...
# xeyes
Nr Das auf B habe ich eine gültige .Xauthority und DISPLAY. Allerdings habe ich nichts besonderes getan, um sie einzurichten, also Warum werden sie nicht auf den Container für A gesetzt?
Endlich Host A ist ein Linux Mint 18.1 Laptop. Host B ist eine Debian Jessie.
Haben Sie GUI auf Host A haben oder Sie sind alle von ihm im Kommandozeilen-Modus ausgeführt wird? –
Ich habe GUI auf Host A und Host B. – user1381
Haben Sie ein Paket namens xauth auf Host A? Wenn nicht, versuche es zu installieren. –