【问题标题】:Windows 10 Docker Host - Display GUI application from Linux ContainerWindows 10 Docker 主机 - 从 Linux 容器显示 GUI 应用程序
【发布时间】:2017-02-22 19:22:37
【问题描述】:

我正在尝试使用 Windows 10 作为我的主机并运行包含基于 gui 的应用程序的 Docker 容器,并使用 X11 转发或类似的方式显示它们。我在网上找到的几乎所有信息都与 Linux 主机到 Linux 容器(例如 - http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker)有关,其中暴露了套接字/x11 权限。我发现的其他信息来自以前的 Boot2Docker / Windows 实现,其中需要 virtualbox 作为设置过程的一部分并且需要 VNC。

目前的基本设置,有谁知道必须调整什么才能让 Firefox 在主机系统的窗口中显示? --

在 Windows 10 主机上启动 XMing 服务器

Dockerfile

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y firefox
CMD /usr/bin/firefox

命令

PS> docker build -t firefox .
PS> set-variable -name DISPLAY -value localhost:0.0
PS> docker run -ti --rm -e DISPLAY=$DISPLAY firefox

谢谢

【问题讨论】:

  • 你做到了吗?并且您是否有博客文章或文档说明您是如何做到的?
  • 是的 - 已接受答案中的 cmets 详细说明了我是如何做到的。我使用了我的问题中的代码,除了在命令中我更改了用于导出显示的第二行以使用我的主机 IP 地址而不是 localhost 术语。然后我在启动 XMing 应用程序时修改了其中一项设置以选中“无访问控制”

标签: windows user-interface docker containers


【解决方案1】:

您需要将 DISPLAY 设置为 localhost 以外的其他值。容器有自己的 localhost 接口,因此您的 X11 客户端将尝试连接到它自己而不是您的主机。

相反,您可以传入 Windows 机器的网络适配器的 IP 地址。容器将能够连接到它。您还需要将 X11 服务器配置为侦听该接口。

【讨论】:

  • 就是这样,现在就像一个魅力!谢谢!测试这个从等式中删除 docker 容器的好方法是让它与 windows bash 和 firefox 一起工作。执行 $export DISPLAY=(ip_address):0 然后从 bash 运行 firefox 我能够在将容器加入混合之前告诉 x 服务器和接口是正确的
  • 另外 - 如果使用 XMing 作为您的 x 服务器,那么根据我提供的代码,您应该将 Display Number 保持为 0 并确保 选中“No Access Control” 在“附加参数”屏幕上
  • 请注意,它必须是主机网络适配器从容器中看到。对于非桥接网络,这可能与主机用来与世界通信的 IP 地址完全不同。 Docker Desktop 默认使用 10.x.y.z 网络
猜你喜欢
  • 2017-03-07
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
  • 2019-05-15
  • 1970-01-01
相关资源
最近更新 更多