无法在远程服务器上的 Docker 容器上启动 GUI 程序

Cannot launch GUI program on Docker container on remote server

我办公室的工作机器是Ubuntu18.04,我在这台机器上安装了一个Docker容器。一切正常,我可以在 Docker 容器中使用 Firefox 和 PyCharm 等图形用户界面 (GUI) 程序。当我在家工作时,我使用我的 Windows 10 笔记本,为了连接我在办公室工作的机器,我使用 X2Go 程序。使用这个程序,我可以通过 GUI 远程连接我办公室的机器。我还可以远程 运行 GUI 程序。但是,当再次远程安装Docker 容器时,我无法在Docker 容器中使用GUI 程序。原因是因为为了让 Docker 容器访问主机的 GUI,我使用了 xhost + 命令。但是,当 运行 远程执行此命令时,我收到以下错误:

# xhost:  must be on local machine to enable or disable access control.

如果忽略此错误消息,我将无法在 Docker 容器上启动任何 GUI 程序。有任何想法吗?谢谢。

本文可能对您有所帮助: https://www.ibm.com/support/pages/remote-install-websphere-application-server-unix-host

文章中:

If the remote host is not authorized to connect, you can add it to the list of authorized clients using the following command:

xhost +

xhost: must be on local machine to enable or disable access control.

This indicates that this command is only authorized from a local console (For example, not within a telnet session).

Next, you must export the display so that GUI screens generated on the remote host will be displayed on the local host. To do this, run the following command on the remote host while logged in through the telnet session from the local host:

export DISPLAY=

您的远程桌面协议也可能是个问题。

X2Go 使用 NX 协议和 SSH 来保证安全。
NX 协议使用缓存技术,这可能是问题的一部分。远程桌面技术可能会改变体验,并且可能无法远程使用 docker GUI。

我在使用远程桌面技术(RDP、VNC 等)时遇到过类似的问题,部分或全部桌面体验不可见。

我建议尝试使用 VNC(RFB 协议)软件,看看是否可行。 RDP 是另一种解决方案。

请注意 VNC 和 RDP 默认情况下不是很安全,除非您使用隧道解决方案(VPN 等)和加密。有内置加密(通过 SSH)的 VNC,RDP 也有安全解决方案,但如果您从家里访问它来工作,您应该确保您的安全经理知道您选择的适合您的技术。