如何在无根docker容器中运行GUI应用程序?

如何在无根docker容器中运行GUI应用程序?

当我在主机设备上运行时,docker 容器中的 gui 应用程序运行良好docker run -it --net=host -e DISPLAY=$DISPLAY <image>xhost +但是,当涉及到rootless dockerd(DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock使用docker cli时使用env)时,gui应用程序无法工作并提示

Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0

那么root和rootless docker容器在连接主机显示时有什么区别以及如何在rootless docker容器中使用gui呢?

答案1

在 Rootless Docker 中,即使使用--net=host.

无根模式已知限制:

主机网络 ( docker run --net=host) 也在 RootlessKit 内部命名。

您可以通过共享 XServer 套接字进行显示。

docker run -it --volume=/tmp/.X11-unix/:/tmp/.X11-unix/ -e DISPLAY=$DISPLAY <image>

没有必要xhost +,因为无根容器中的UID已映射到主机上的docker执行用户。

相关内容