运行 docker 带有 MacBookPro 主机的容器上的 GUI 应用程序

Running GUI apps on docker container with a MacBookPro host

我一直在尝试按照 https://learning-continuous-deployment.github.io/docker/images/dockerfile/2015/04/22/docker-gui-osx/ 上关于 运行 MacBookPro 主机内 docker 容器中的 GUI 应用程序的说明(使用 Docker 工具)。

我使用 Fedora 23 创建了一个简单的 docker 容器并安装了 firefox。

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

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

有人知道错误的含义吗and/or如何解决?

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

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

  1. 安装 XQuartz
  2. 打开它,转到首选项 > 安全并选中允许来自网络客户端的连接的选项
  3. 重启
  4. 启动 XQuartz(从应用程序文件夹或使用 open -a XQuartz
  5. 允许来自您的 IP 的传入连接 xhost + $IP(请参阅注释 1)
  6. 运行 您的 docker 容器中的 firefox(见注释 2)

注意 1:这是获取您的 IP 地址的绝妙技巧:

export IP=$(ifconfig en0 | grep inet | awk '=="inet" {print }') 

注释 2: 还有一个示例 docker 运行 命令启动 firefox

docker run -it -e DISPLAY=$IP:0 -v /tmp/.X11-unix:/tmp/.X11-unix <image> firefox

我看到了同样的错误,不幸的是重新启动并没有解决我的问题。但是,我能够通过挂载并指向我的本地 .Xauthority 文件来使其工作:

IP=$(ifconfig en0 | grep inet | awk '=="inet" {print }')
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 内容已根据

正确配置