代码之家  ›  专栏  ›  技术社区  ›  joesan

运行Docker时无法在Mac上打开远程显示

  •  -1
  • joesan  · 技术社区  · 7 年前

    我有一个Dockerfile,写在下面:

    FROM     joesan/raspi_opencv_3:latest
    RUN      apt-get update
    RUN      sudo apt-get install --no-install-recommends xserver-xorg
    RUN      sudo apt-get install --no-install-recommends xinit
    RUN      apt-get install -qqy x11-apps
    RUN      mkdir -p /raspi_motion_detection/project
    WORKDIR  /raspi_motion_detection/project
    COPY     ./ $WORKDIR/
    COPY     ./requirements.txt $WORKDIR/
    ADD      . $WORKDIR
    CMD      xclock
    

    我有一个树莓圆周率,我从我的苹果ssh(运行高)。

    1. 我从Mac上ssh到RaspPi
    docker run -ti --device=/dev/vcsm \
    --device=/dev/vchiq \
    -e DISPLAY=$DISPLAY:0 \
    -e XAUTHORITY=/.Xauthority \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    joesan/motion_detector
    
    1. 我收到如下错误消息:

      错误:无法打开显示:localhost:11.0:0

    2. 但是当我直接在ssh终端上运行xclock时,我可以看到xclock窗口打开了。

    https://medium.com/@dimitris.kapanidis/running-gui-apps-in-docker-containers-3bd25efa862a

    2 回复  |  直到 7 年前
        1
  •  0
  •   mbuechmann    7 年前

    稍微简化一点:每个docker容器在docker守护进程中运行,它基本上为每个容器提供一个精简的操作系统。那个操作系统没有窗口管理器。

    这就是为什么命令 xclock

    当您通过ssh连接到raspberry pi并调用 它在raspberry的os(可能是raspian)中执行,该os有一个运行的窗口管理器。

        2
  •  0
  •   joesan    7 年前

    好啊所以我想我找到了解决问题的办法!我就是这么做的!

    1. 在我的SD卡上重新安装了Raspberry Stretch Lite。原来的那个好像有一些旧文件!你可以跳过这一步,但对我来说,有一些旧的安装损坏的文件,所以我决定得到一个新的安装!

    2. 在我的Raspberry Pi上,运行以下命令:

      xauth列表

      我将cookie本地复制到文本编辑器,因为我以后需要它!

    3. 使用以下命令生成Dockerfile:

    docker运行-it--net=host--device=/dev/vcsm--device=/dev/vchiq-e 显示-v/tmp/.X11 unix joesan/motion\u探测器bash

    注意,我正在对Docker运行运行运行bash命令,以便从运行图像中获得basj提示!

    1. 步骤3的结果将从我刚刚在步骤3中运行的容器中给我一个bash提示

    2. 我现在需要在映像中安装xauth

    是在这次爆炸之后!我得到了我想要的!

    推荐文章