一尘不染

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

docker

我正在看在docker 中运行GUI应用程序。我听说由于Xserver被暴露,这会引起安全问题。我想知道以下每个步骤的操作,特别是xhost local:root

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

阅读 971

收藏
2020-06-17

共1个答案

一尘不染

  • [ -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 在启用了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
2020-06-17