用于docker GUI应用程序的xhost命令(Eclipse)

时间:2017-03-25 10:59:32

标签: eclipse bash docker xserver

我正在寻找在码头工作中运行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

1 个答案:

答案 0 :(得分:8)

  • [ -d ~/workspace ] || mkdir ~/workspace

如果主目录尚未存在,则会在主目录中创建工作区目录。

  • xhost local:root

这允许本地计算机上的root用户连接到X windows显示。

  • 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将工作区文件夹从主机上的主目录映射到容器内的/ workspace文件夹,并启用了selinux共享设置。
  • docbill/ubuntu-umake-eclipse运行此图片,由docker hub上的用户docbill创作(任何人都可以在此处创建帐户)。这不是docker的官方图片,而是社区提交的图片。

从这些选项中,此命令很可能是为在RHEL或CentOS Docker主机上运行的用户设计的。它不适用于Docker for Windows或Docker for Mac,但应该适用于其他Linux版本。

我使用了类似的命令来使用GUI运行我的容器,但是没有xhost和主机网络。相反,我只是将X窗口套接字(/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