Docker GUI应用程序的xhost命令(Eclipse)
我在Docker中运行一个GUI应用程序 。 我听说由于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
-
[ -d ~/workspace ] || mkdir ~/workspace
这将在主目录中创build一个工作空间目录(如果尚不存在)。
-
xhost local:root
这允许本地机器上的root用户连接到X窗口显示。
-
docker run -i --net=host --rm -e DISPLAY -v $HOME/workspace/:/workspace/:z docbill/ubuntu-umake-eclipse
这运行一个容器与以下选项:
-
-i
:交互式,运行此命令后键入的input被容器内启动的进程接收。 -
--net=host
:主机联网,容器不是用隔离的networking堆栈启动的。 相反,主机的所有networking接口都可以在容器内部直接访问。 -
--rm
自动清理出口处的容器。 否则容器将保持停止状态。 -
-e DISPLAY
从主机传入DISPLAY环境variables到容器中。 这告诉GUI程序在哪里发送他们的输出。 -
-v $HOME/workspace/:/workspace/:z
启动selinux共享设置,将主机上的主目录中的工作空间文件夹映射到容器内的/ workspace文件夹。 -
docbill/ubuntu-umake-eclipse
运行这个镜像,由用户docbill在docker中心(任何人都可以在这里创build一个帐户)创作。 这不是docker工人的正式形象,而是一个社区提交的形象。
从选项中,这个命令很可能是为在RHEL或CentOS Docker主机上运行的用户devise的。 它不适用于Windows的Docker或Mac版的Docker,但应该适用于其他Linux版本。
我用类似的命令来运行我的容器与GUI,但没有xhost和主机networking。 相反,我刚刚将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