Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用MacBookPro主机在docker容器上运行GUI应用程序_Macos_Docker_Socat_Xquartz - Fatal编程技术网

Macos 使用MacBookPro主机在docker容器上运行GUI应用程序

Macos 使用MacBookPro主机在docker容器上运行GUI应用程序,macos,docker,socat,xquartz,Macos,Docker,Socat,Xquartz,我一直在尝试遵循关于在MacBookPro主机内的docker容器中运行GUI应用程序的说明(使用docker工具) 我使用Fedora23和firefox创建了一个简单的docker容器 我尝试运行firefox,大约一分钟后,出现以下错误: Unable to init server: Broadway display type not supported: 192.168.57.3:0 Error: cannot open display: 192.168.57.3:0 有人知道错误的含

我一直在尝试遵循关于在MacBookPro主机内的docker容器中运行GUI应用程序的说明(使用docker工具)

我使用Fedora23和firefox创建了一个简单的docker容器

我尝试运行firefox,大约一分钟后,出现以下错误:

Unable to init server: Broadway display type not supported: 192.168.57.3:0
Error: cannot open display: 192.168.57.3:0

有人知道错误的含义和/或如何修复吗?

重新启动笔记本电脑为我解决了问题。

在Mac电脑上,您可能会发现以下步骤很有用:

  • 安装XQuartz
  • 打开它,转到preferences>Security并选中允许网络客户端连接的选项
  • 重新启动
  • 启动XQuartz(从应用程序文件夹或使用
    打开-a XQuartz
  • 允许使用
    xhost+$ip
    从您的ip进行传入连接(请参见备注1)
  • 在docker容器中运行firefox(参见注释2)
  • 注1:这里有一个巧妙的技巧来设置您的ip地址:

    export IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}') 
    
    注2:还有一个示例docker运行命令启动firefox

    docker run -it -e DISPLAY=$IP:0 -v /tmp/.X11-unix:/tmp/.X11-unix <image> firefox
    
    docker run-it-e DISPLAY=$IP:0-v/tmp/.X11 unix:/tmp/.X11 unix firefox
    
    我看到了相同的错误,不幸的是,重新启动并没有为我解决问题。但是,我可以通过挂载并指向我的本地.Xauthority文件使其工作:

    IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
    docker run --rm  --name firefox -e DISPLAY=$IP:0 -e XAUTHORITY=/.Xauthority --net host -v /tmp/.X11-unix:/tmp/.X11-unix -v ~/.Xauthority:/.Xauthority  jess/firefox
    

    当然,这假设您的XQuarts/xhost配置正确,这对我也适用。设置好所有内容后,立即使用XQuartz或xhost。谢谢。据我记忆所及,这是我遵循的程序。我不再有macbookpro,无法验证。第3步很重要!注销并重新登录是不够的!这项工作做得很出色。应该是公认的答案谢谢!工作起来很有魅力。问题:为什么我们必须获得网络适配器的实际地址?如果所有这些都发生在一台主机上,为什么我们不能使用127.0.0.1?无关:
    grep…|awk…
    总是冗余的。您总是可以向awk添加一个match子句:
    grep abc | awk'$1==“xyz”
    变成
    awk'$0~/abc/&&$1==“xyz”
    。但在这里,这个事件是多余的,因为
    grep inet
    对于第一列等于
    “inet”
    的行总是正确的;你可以不使用grep命令。我现在又开始使用MacBookPro了。我不知道为什么这个解决方案以前对我不起作用,但现在起作用了。所以我可以亲自验证它是否有效。也许它适用于现代MacBookPros,而不适用于旧款。不知道。