微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OpenGL Docker 示例需要 --net=host,有替代方案吗?

如何解决OpenGL Docker 示例需要 --net=host,有替代方案吗?

这是一个关于 Docker 网络和在 Docker 容器中运行 OpenGL GUI 应用程序的问题。

This example 表明要让这个特定的 OpenGL 示例在 Docker 容器中运行,必须提供 --net=host 选项。当然,如果没有该选项,示例将无法正常工作。

我的问题是,如果我不想指定 --net=host 因为我希望它成为不同网络的一部分,那么有没有办法在创建容器时指定一些其他选项选择使其运行所需的确切网络更改或端口映射?

我不完全理解为什么它需要 --net=host 选项。 (我认为它与 X11 服务器有关??)以前(在我的容器使用 OpenGL 之前)有一个 mynetwork 网络,我的容器用来与系统上的其他 docker 容器通信。所以它是用 --net=mynetwork 启动的。但是现在,改为指定 --net=host 可以使新的 OpenGL 功能正常工作,但会破坏需要与 mynetwork 网络上的其他 docker 容器通信的功能

我试图更好地理解为什么 OpenGL 需要 --net=host,如果除了 --net=host 之外我还可以做些什么来正确启用容器在主机网络方面实际需要的任何内容,以便我可以同时 1)与 mynetwork 网络上的其他容器通信,以及 2) 使用 OpenGL 功能

也许有一种方法可以将 disPLAY 和/或 XAUTHORITY 设置为某些值,以使容器正确连接到主机?主机上可能还涉及一个额外的步骤来允许这样做(除了 xhost +)?

为了完整起见,这里是上述示例(旨在在 NVIDIA Jetson Nano 上运行)。寻求替代 --net=host 是我问题的相关部分。

$ xhost +
$ sudo docker run -it --rm --net=host --runtime nvidia -e disPLAY=$disPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/l4t-base:r32.3.1
$ apt-get update && apt-get install -y --no-install-recommends make g++
$ /usr/local/cuda-10.0/bin/cuda-install-samples-10.0.sh /tmp
$ cd /tmp/NVIDIA_CUDA-10.0_Samples/2_Graphics/simpleGL
$ make
$ ./simpleGL

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。