我在 Linux 服务器上创建了一个 Docker 容器。我使用 VSCode 从笔记本电脑连接到此容器,并且可以运行一些代码。但是,我无法运行某些需要 GUI 的程序,例如 gedit。如何将其配置为从本地计算机上的容器运行基于 GUI 的应用程序?
我知道我可以通过X11实现这一点,但我不知道如何配置它。
解决方案:在Linux服务器上,我运行
xhost +
和echo $DISPLAY
,以查看可用的DISPLAY端口。然后我使用以下命令构建一个容器
docker run -id --name your_env --net=host -e DISPLAY=:15.0 -v $HOME/.Xauthority:/root/.Xauthority -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all -v /home/zsx/workspace:/workspace --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --gpus all --env="QT_X11_NO_MITSHM=1" your_images /bin/bash`
注: 在命令 DISPLAY= XX 中,XX 应该是从
echo $DISPLAY
获得的值。然后就可以在容器中运行GUI程序了。
然而,我又遇到了另一个问题。如果DISPLAY端口改变,带有GUI的程序将无法运行。有什么解决办法吗?
我按照@love7的建议做了同样的事情,但只是用
-e DISPLAY=:15.0
替换了-e DISPLAY=$DISPLAY
,它对我有用。