在 Docker 里显示图形界面这事涉及很多层次的问题,这里记录一下:

基本操作

为了简化,这里使用gns3/xeyes镜像,这个镜像会在容器中运行xeyes命令。基本的运行指令是

docker run --rm gns3/xeyes

这样肯定会失败,提示Error: Can't open display:,因为容器中默认是没有图像输出的。

配置参数

首先需要配置DISPLAY环境变量,并且由于使用的是转发的 X11,使用主机的网络,并且加载 .Xauthority 用于管理权限。

docker run --rm --net=host -e DISPLAY=$DISPLAY -v $HOME/.Xauthority:/root/.Xauthority:ro gns3/xeyes

这样就能看到 xeyes 的界面了。另外还有别的配置方法,这里简单记录一下:

sudo xhost +local:docker
docker run --rm -v /tmp/.X11-unix:/tmp/.X11-unix --env DISPLAY=$DISPLAY --net=host -v "$HOME/.Xauthority:/root/.Xauthority:rw"  -v $PWD:/scripts gns3/xeyes