在 OS X 上通过 Boot2Docker 在 Docker 中运行 xeyes

在 OS X 上通过 Boot2Docker 在 Docker 中运行 xeyes

我似乎对牦牛剃毛很感兴趣。

我在 Mac 上运行了 XQuartz 2.7.7 (xorg-server 1.15.2) 和 Yosemite。我可以在本地运行 xeyes。我有一个安装了 xeyes 的 Docker 镜像。我使用以下 Dockerfile 构建它并对其进行标记kojiromike/xapps

FROM debian:jessie
RUN apt-get -qqy update \
 && apt-get -qqy install xauth x11-apps --no-install-recommends

我尝试了以下方法让容器中运行的 xeyes 显示在我的本地显示器上:

我使用 shared 启动 boot2docker,tmp这样我就可以访问 .X11-unix。由于boot2docker 问题 678

boot2docker --vbox-share=/tmp=tmp up
boot2docker ssh <<< 'sudo mount -t vboxsf tmp /tmp'

首先,我刚刚尝试使用 XQuartz 接口禁用安全机制:

在此处输入图片描述

我以为我不需要允许来自网络客户端的连接因为我尝试使用 UNIX 套接字。第一次尝试:

$ docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY \
  kojiromike/xapps xeyes
Error: Can't open display: unix:0

接下来我尝试使用 xauth:

$ docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY \
  -e XAUTH="$(xauth nextract - $DISPLAY)" kojiromike/xapps \
  sh -c 'printf "%s" "$XAUTH" | xauth nmerge - && xeyes'
Error: Can't open display: unix:0

我已经没有什么可以尝试的了。我读过Jessica Frazelle 的博客,但看起来她直接在 Docker 主机上工作,所以可能没有我遇到的 boot2docker 问题。

我还需要执行哪些步骤才能通过 boot2docker 从 docker 容器连接到本地 X 服务器?

答案1

看着https://stackoverflow.com/a/36190462/304690特别是设置:

DISPLAY=$IPADDR:$DISP_NUM

相关内容