Tag: x11

通过ssh转发x11后台会发生什么?

当我在主机上运行一个xServer,然后使用ssh连接到另一台机器时,我试图熟悉幕后实际发生的事情: ssh -Y user@machine 。 在这种情况下,我将在Windows上使用cygwin,并将DISPLAY环境variables设置为:0.0并且一旦连接到远程计算机就会运行一个GUI应用程序,这将显示在我的主机上。 Mac将使用本地xServer的石英(抱歉,如果这个术语不正确,但希望你知道我的意思),将使用ssh -X user@machine而不是-Y 。 这里的目标是拥有一个Docker容器,它只负责安装和运行GUI应用程序。 我将在主机上运行Docker容器,GUI将从目标主机上popup。 我已经通过ssh做了这个工作,并手动在容器中启动一次GUI应用程序。 我只需要知道如何configuration这个香草Linux机器(Docker容器)来转发GUI。 我想了解ssh -Y命令实际上是如何正确设置转发的是我所需要的缺失的难题。 我对.Xauthority文件的存在有一个模糊的理解。 我并不关心连接的安全性。 工作后我会担心的。

在Docker中使用X11转发运行多个GUI

我在Docker中有一个安装程序,用于在Ubuntu 14.04.03的Docker中运行GUI应用程序。 GUI应用程序使用具有必要参数的脚本文件启动。 如果应用程序只有一个窗口,设置工作正常,我可以通过X11转发轻松查看结果。 这是我用来运行应用程序的命令 sudo docker run -it \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e DISPLAY=$DISPLAY \ -w /Apps/ \ –rm appsdocker:v1 \ /bin/bash -c "./run_singleGUIapp.sh param1" 但是如果GUI有一个button,点击后会打开一个新窗口,GUI应用程序将无法响应,并在一段时间后返回到系统提示符。 我试图从这个链接运行的例子,说明如何在Docker上使用X11转发运行firefox。 一旦我searchDocker中运行的firefox上的查询,并尝试“在新窗口中打开”任何后续命中,应用程序的工作。 我试图推测,这也会导致一个不响应的行为,但似乎这不是一般情况,只是坚持我的脚本。 我知道这是非常模糊的问题描述,因为我不能透露应用程序和环境的细节。 任何关于如何处理GUI应用程序的指针将不胜感激。

X11将docker容器中的显示转发到非主机显示

主机A – 远程Linux服务器(无GUI)主机B – 远程Windows(GUI)主机C – 远程Windows(GUI) 场景:在Host B和XMing上使用Putty,并将X11转发设置为:0.0 ,将ssh设置为Host A; 接下来,打开任何可视化编辑器 – > UI在主机B上成功显示 在提供env DISPLAY = Host-B-IP和/tmp/.X11-unix卷时,运行带有X11转发的Docker容器也会将显示发送到主机B. 现在,在XMing的Host C上,通过类似于Host A的putty打开一个可视化编辑器; 这将按预期在主机C上显示。 问题部分:我想从主机A运行一个Docker容器来使用主机C(失败/超时)的显示。 注意:尽pipe将docker env DISPLAY设置为Host-C-IP,但是从主机B或C连接时是否运行容器并不显示。 但是,如果使用主机B的IP,则在两种情况下均显示在B上。

X11转发到AWS的Docker客户端的Windows x服务器

我正在使用windows mobaxterm for xserver和ssh客户端。 如果我在AWS的ssh服务器(ubuntu 16.04)中键入xclock,时钟就会出现,并且没有问题。 现在我在AWS中安装nvidia-docker。 以下是启动Docker容器的运行脚本: nvidia-docker run -it \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v /tmp/.docker.xauth:/tmp/.docker.xauth \ -e XAUTHORITY=/tmp/.docker.xauth \ -net=host \ \ gcr.io/tensorflow/tensorflow:latest-gpu /bin/bash 我有错误是: root@ip-172-31-35-73:/notebooks# xclock MobaXterm X11 proxy: Unsupported authorisation protocol Error: Can't open display: localhost:10.0

在Docker中运行Chromium – Gtk:无法打开显示:: 0

当我尝试运行docker容器中的铬时,我看到以下错误:Gtk:can not open display :: 0 Dockerfile :(基于https://registry.hub.docker.com/u/jess/chromium/dockerfile ) FROM debian:jessie # Install Chromium RUN sed -i.bak 's/jessie main/jessie main contrib non-free/g' /etc/apt/sources.list && \ apt-get update && apt-get install -y \ chromium \ chromium-l10n \ libcanberra-gtk-module \ libexif-dev \ libpango1.0-0 \ libv4l-0 \ pepperflashplugin-nonfree \ –no-install-recommends && \ mkdir -p /etc/chromium.d/ # Autorun x11vnc […]

使用PyCharm和Docker解释器进行X11转发

我正在用PyCharm开发一个使用Docker解释器的项目,但是我在做大多数“交互”事情时遇到了问题。 例如, import matplotlib.pyplot as plt plt.plot([1, 2, 3], [4, 5, 6]) 给 RuntimeError: Invalid DISPLAY variable 我可以绕过这个使用 import matplotlib matplotlib.use('agg') 这可以消除这个错误,但是当我做plt.show()时,不会产生任何情节。 我也得到了同样的错误,在线程[pycharm远程python控制台]:无法连接到X服务器“导入pandas时尝试debugging导入pandas错误,但我不能SSH到我的docker容器,所以解决scheme提出了那里不起作用。 我已经看到了在“docker run”命令中传递“-e DISPLAY = $ DISPLAY”的解决scheme,但是我不相信PyCharm有任何用Docker解释器指定命令行参数的function。 有没有办法设置一些永久的,通用的X11转发(如果这确实是根本原因),以便这些图将被适当地传递给本地机器上的DISPLAY? 更普遍的是,有没有人在PyCharm中使用了带有Docker解释器的matplotlib?

Xt错误:如果使用默认的DISPLAY,则无法打开显示

概观 我试图让XQuartz在OSX上工作,所以我可以通过Docker做X11转发。 我按照这里的说明 。 我相信我的问题可能只是第一部分的回答,但为了以防万一(为了避免XY问题),我也提供了第二部分。 安装 我已经安装它通过自制软件,通过brew cask install xquartz 。 然后我open -a XQuartz来启动它。 本地xterm testing一下,如果我尝试打开一个xterm ,它不起作用: MacBook-Pro:opencv-gui csaftoiu$ xterm xterm: Xt error: Can't open display: /private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0 伪文件存在,但: MacBook-Pro:opencv-gui csaftoiu$ echo $DISPLAY /private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0 MacBook-Pro:opencv-gui csaftoiu$ ls -alh $DISPLAY srw-rw-rw- 1 csaftoiu wheel 0B May 6 21:12 /private/tmp/com.apple.launchd.3wncZULdXC/org.macosforge.xquartz:0 我可以通过XQuartz打开一个xterm。 然后: bash-3.2$ echo $DISPLAY :0 该值也适用于常规的OSX: $ […]

如何从Docker容器中查看GUI应用程序

当我尝试运行一个graphics用户界面,例如xclock,我得到的错误: Error: Can't open display: 我正在尝试使用Docker来运行一个ROS容器,我需要看看里面运行的GUI应用程序。 我曾经使用过一个Vagrant虚拟机,并能够使用X11来完成这个任务。 到目前为止,我已经尝试将方法#1和#2放入基于这里的信息的docker文件中: http : //wiki.ros.org/docker/Tutorials/GUI 然后我试着在这里复制大部分dockerfile: https ://hub.docker.com/r/mjenz/ros-indigo-gui/~/dockerfile/ 这是我目前的docker文件: # Set the base image to use to ros:kinetic FROM ros:kinetic # Set the file maintainer (your name – the file's author) MAINTAINER me # Set ENV for x11 display ENV DISPLAY $DISPLAY ENV QT_X11_NO_MITSHM 1 # Install an x11 […]

运行docker容器与SSH从cygwin显示不起作用

我正在运行在我的Windows 7计算机上安装的docker工具箱,我试图从外部访问docker(win桌面),这样我就可以获得一个GUI应用程序(假设我们将用Firefox进行testing)众所周知, docker剂量来与服务器X,所以我发现解决scheme是安装xcygwin执行X11任务…然后通过SSH运行容器,所以它可以显示在我的窗口…问题是我不能设置显示正确,我这样做: export DISPLAY=:0.0 并尝试了其他几个选项,如导出到主机的IP,导出到本地主机等。然后我通过运行SSH到我的docker docker-machine ssh default -X (如果我没有错,-X应该激活x11转发) 现在,我进入我的泊坞窗,所以我简单地尝试通过运行这样的东西来运行我的魔法firefox容器: Docker run –rm -e DISPLAY=$DISPLAY devurandom/firefox 我得到了预期的错误:无法打开显示:对! 我没有在我的docker设置显示! 所以我做了 : DOCKER=0.0 嗯总是一样的东西,无法打开显示:0.0! 我也试过这一个,我不能确定path来自哪里,但是.. docker run -ti -v / tmp / serverX:/ tmp / ServerX -e DISPLAY = $ DISPLAY … 没有运气,有人知道如何解决这个PLZ!

具有共享X11套接字的Docker:为什么在容器外“启动”Firefox?

我有以下情况: 我设置了一个可以访问X11套接字的Docker容器,本质上是这样的: https : //stackoverflow.com/a/25334301 然后我在容器中安装了Firefox,并使用bash中的“firefox”命令启动它。 我注意到:如果在容器中启动Firefox时,Firefox已经在我的主机上运行,​​它实际上已经“逃脱”了容器,因为它只是打开了Firefox主机实例的一个新窗口。 因此,它可以访问主机上的所有内容,容器变得毫无用处。 这也反过来反之亦然:如果Firefox没有在主机上运行,​​我在容器中启动一个实例,它真的在容器中运行。 如果我在主机上启动Firefox,新的实例也在容器中运行。 但是,我无法用gvim而不是Firefox重现这种行为。 我很清楚X11套接字共享中固有的安全问题,但是我不能解释我上面描述的情况。 为什么一个容器在其受限制的环境之外启动一个“过程”—或者说一个窗口? 而且我的主机系统甚至有可能仅仅是因为同一个程序已经在一个容器中运行了而在一个容器中启动一个进程呢? (请注意,我不知道如何调用除“process”以外的程序的graphics化实例,虽然在这种情况下可能不是一个真正的过程) 系统:Ubuntu GNOME 14.10,Docker 1.5,Ubuntu:最新的Docker镜像。 更新:如果我使用-new-instance标志启动Firefox,则不会发生这种-new-instance ,所以它似乎是一个比X11套接字问题更多的Firefox问题。 更新2:似乎也发生在其他情况下,例如使用ssh与X-forwarding: https://unix.stackexchange.com/questions/104476/why-starting-firefox-from-command-line-in-vm-starts-the-firefox-in-the-host-ma 和 https://superuser.com/questions/462055/launching-firefox-on-remote-server-causes-local-firefox-to-open-the-page-instead 现在的问题是,Firefox如何做到这一点? 他们用什么样的X11巫术来查明Firefox是否已经在运行?