【问题标题】:xhost command for docker GUI apps (Eclipse)用于 docker GUI 应用程序 (Eclipse) 的 xhost 命令
【发布时间】:2017-03-25 21:06:00
【问题描述】:

我正在考虑在 docker 中运行 GUI app。我听说这会因为 Xserver 被暴露而引发安全问题。我想知道以下每个步骤都在做什么,特别是xhost local:root

  • [ -d ~/workspace ] || mkdir ~/workspace
  • xhost local:root
  • docker run -i --net=host --rm -e DISPLAY -v $HOME/workspace/:/workspace/:z docbill/ubuntu-umake-eclipse

【问题讨论】:

    标签: eclipse bash docker xserver


    【解决方案1】:
    • [ -d ~/workspace ] || mkdir ~/workspace

    这会在您的主目录中创建一个工作区目录(如果它尚不存在)。

    • xhost local:root

    这允许本地机器上的 root 用户连接到 X 窗口显示。

    • docker run -i --net=host --rm -e DISPLAY -v $HOME/workspace/:/workspace/:z docbill/ubuntu-umake-eclipse

    这将运行具有以下选项的容器:

    • -i:交互式,运行此命令后输入的输入被容器内启动的进程接收。
    • --net=host: 主机联网,容器没有用隔离的网络栈启动。相反,主机的所有网络接口都可以在容器内直接访问。
    • --rm 在退出时自动清理容器。否则容器将保持停止状态。
    • -e DISPLAY 将 DISPLAY 环境变量从主机传递到容器中。这告诉 GUI 程序将其输出发送到哪里。
    • -v $HOME/workspace/:/workspace/:z 将主机上的主目录中的工作区文件夹映射到启用了 selinux 共享设置的容器内的 /workspace 文件夹。
    • docbill/ubuntu-umake-eclipse 运行此图像,由 docker hub 上的用户 docbill 创作(任何人都可以在此处创建帐户)。这不是来自 docker 的官方镜像,而是社区提交的镜像。

    从选项来看,这个命令很可能是为在 RHEL 或 CentOS Docker 主机上运行的用户设计的。它不适用于适用于 Windows 的 Docker 或适用于 Mac 的 Docker,但应该适用于其他 Linux 变体。

    我使用了类似的命令来运行带有 GUI 的容器,但没有 xhost 和主机网络。相反,我只是将 X windows 套接字 (/tmp/.X11-unix) 直接映射到容器:

    docker run -it --rm -e DISPLAY -u `id -u` \
      -v /tmp/.X11-unix:/tmp/.X11-unix \
      -v /etc/localtime:/etc/localtime:ro \
      my_gui_image
    

    【讨论】:

      猜你喜欢
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多