当图像中泊坞窗机运行X11转发不工作,但如果图像运行瓦特/ OA泊坞窗机正常工作(X11 forwa

2019-10-29 16:07发布

我有一个码头工人容器基于Debian,当我运行它喜欢它的工作原理,

“docker run -ti --name devworkstation --rm --net=host -v /var/run/docker.sock:/var/run/docker.sock -e DISPLAY=$env:DISPLAY xxxx/xxxx:devworkstation”

通过作品,我的意思是bash命令提示符下出现,当我运行xeyes,我看到窗口在我的Windows 10的电脑如我所料。 (X11转发的作品。)

($ ENV:DISPLAY =“myWinIP:0.0”)

然后,我创建了一个名为,一个新的外部虚拟交换机“dockerExternalSwitch,”和泊坞窗机,“泊坞窗机创建-d的Hyper-V --hyperv虚拟交换机dockerExternalSwitch DEV1”

我根据泊坞窗机ENV DEV1设置我的环境。 然后我的搬运工机器上运行相同的搬运工运行命令如上。 它带来了我的命令提示符如我所料,但是当我运行xeyes,我得到一个错误:

错误:无法打开显示:xxx.xxx.xxx.xxx:0.0

我也有Debian的图像上安装了Firefox。 它给出了一个类似的错误:无法初始化服务器:百老汇显示类型不支持:xxx.xx.xx.xxx:0.0错误:无法打开显示:xxx.xxx.xxx.xxx:0.0

由于它的工作原理,当我直接运行(W / OA泊坞窗机),当我使用泊坞窗机故障问题,我想知道,如果它是网络相关。

Dockerfile内容:

from debian:9.5
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y firefox-esr
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y vim git curl
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y gdb valgrind
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y qt4-default
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y dos2unix tcpdump netcat
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apt-utils
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y linux-image-rt-amd64
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y task-mate-desktop
RUN env
CMD /bin/bash

我已经试过所有的X11转发的建议,我可以在互联网上找到。 我搜索过的建议堆栈溢出。 我还没有找到一个解决方案,这似乎是关系到泊坞窗机。 什么我可以尝试任何建议,将不胜感激。

(仅供参考,我与泊坞窗机工作的原因是,我有一个连接到网络摄像机,它作为一个泊坞窗机,但不是当我没有泊坞窗机运行示例代码。)

Answer 1:

我想到了。 当运行图像W / O泊坞窗机,DISPLAY变量必须是我的Windows计算机的IP地址。 当运行与泊坞窗机的形象,我不得不改变DISPLAY环境变量是我创造了新的虚拟交换机的IP地址。 在我的脚本文件我用下面的代码:

#$local is true when running w/o the docker machine
if ($local) {
     $IPv4=get-netipaddress -InterfaceAlias "vEthernet (Default Switch)" -AddressFamily "IPv4" | select -expand IPAddress
 }
 else {
     $IPv4=get-netipaddress -InterfaceAlias "vEthernet (dockerExternalSwitch)" -AddressFamily "IPv4" | select -expand          IPAddress
 }
debug-output "IPv4: $($IPv4)"
 $env:DISPLAY=$IPv4 + ":0.0"

if (! $local) {
  #set up to use docker-machine using docker-machine env dev1
}

docker run -ti --name devworkstation --rm --net=host -v /var/run/docker.sock:/var/run/docker.sock -e DISPLAY=$env:DISPLAY    xxx/xxx:devworkstation

现在的X11转发工作与和W / O泊坞窗机。



文章来源: X11 forwarding doesn’t work when image runs in docker machine but it works fine if the image is run w/o a docker machine