【问题标题】:OSX X11 Error cannot open displayOSX X11 错误无法打开显示
【发布时间】:2021-04-20 05:44:32
【问题描述】:

我正在尝试在 MacOS 上运行任何我可以运行的 GUI 容器。对于我尝试的每个容器(firefox、chrome、tor、spotify 等),我总是收到错误Error: cannot open display。它并不特定于docker run 命令,我通过$DISPLAY 传递环境标志。当我尝试运行 xhost + 时,我得到了同样的错误。

我有一个全新的 XQuartz 安装。它已启动并正在运行。我在安全性下打开了“允许来自网络的连接”。我尝试构建自己的图像并提取 jessie frazelle 的图像。我不怀疑这是 docker 问题或 Dockerfiles。这是主机上的东西,我的笔记本电脑。我似乎无法弄清楚它是什么。

MacOS Sierra 10.12.5
Docker 17.12.0 稳定版
XQuartz 2.7.11 (xorg-server 1.18.4)
我本地的$DISPLAY 设置为:0.0

【问题讨论】:

  • 尝试将 DISPLAY 设置为您的 Mac 的 IP 地址,例如$(ifconfig en0 | awk '/inet /{print $2 ":0"}')
  • 这似乎有点帮助。我得到好坏参半的结果。例子; $ echo $DISPLAY 192.169.1.11:0 $ xhost + xhost: 无法打开显示“192.169.1.11:0” 我只是在再次尝试容器后进行上述测试,只是为了看看。这与以前的结果相同,但是现在需要更长的 WAAAYYYY。包括给我这个错误的容器。我试过的 3 个容器(tor、chrome、ff)都给了我原来的错误“无法打开显示”。这次只有 tor 和 ff 给了我这个错误。都还是不行,不过都是权限问题

标签: macos docker x11


【解决方案1】:

所以我终于让它工作了。而且看起来很简单。我不确定这实际上是如何解决问题的,但现在容器可以工作了。

我修复它的方法是打开 XQuartz,然后从“应用程序”菜单中打开“终端”应用程序。然后运行命令export DISPLAY=192.168.1.X:0,然后运行xhost +。它输出类似“禁用访问控制,客户端可以从任何主机连接”的内容。之后,我可以运行我的docker run 命令来启动所需的 GUI 容器。

我仍然不确定它是如何工作的,也不能从我的笔记本电脑终端应用程序中运行它们,但它确实有效。它一定是我在本地环境中设置的。希望这可以帮助其他可能遇到相同问题的人。

【讨论】:

    【解决方案2】:

    根据@Byron 的回答,我发现我可以通过在普通终端中运行这两个命令来让它工作:

    export DISPLAY=:0
    /opt/X11/bin/xhost +
    

    【讨论】:

    • 抱歉,它们都不能在我的 Mac OS:10.14.6 上运行。您能否让我知道 Mac OS 的正确步骤。我实际上是在尝试启动 Oracle 的 runInstaller 而不是 docker run
    猜你喜欢
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2023-03-07
    • 2016-12-27
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多