我目前正在在Docker容器中运行DL算法,并且已经取得了成功。但是,我只能通过将3
标志传递给foo_bar_baz
命令来使其运行,该命令使容器使用主机计算机的网络接口。如果我不通过该标志,则会引发以下错误:
import re
text = ' 1 1 1 Old -> New'
sum([int(i) for i in re.findall('\d+', text)])
当我这样做
--net=host
它输出正确的docker run
。
但是我不知道Gstreamer,X11或EGL与完整的网络功能有什么关系。除No EGL Display
nvbufsurftransform: Could not get EGL display connection
No protocol specified
nvbuf_utils: Could not get EGL display connection
标志外,是否对此有任何解释或其他解决方法?因此,我无法为各种容器映射不同的端口。
答案 0 :(得分:1)
我还在NVIDIA DevTalk论坛上创建了一个与此相关的主题,但对我来说仍然是一个暗点。我对得到的答案不满意。
但是可以使用--net=host
标志来解决此问题。
答案 1 :(得分:-1)
快速了解:Gstreamer本身无法在X11-Forwarding上运行,您最好使用VNC解决方案或访问物理计算机。
故障排除
apt install -y gstreamer1.0-plugins-base
xrandr
返回什么?xauth list
返回什么?gst-launch-1.0 nvarguscamerasrc ! nvoverlaysink
返回什么? 例如:
在我的设置中,因为我不使用dockerfile,所以我复制了xauth列表cookie,然后将其粘贴到docker中
xauth add user/unix:11 MIT-MAGIC-COOKIE cccccccccccccccccccccccccc
之后,我可以使用xterm&
测试显示。
此外,完成此操作后,我的输出为xrandr
获取更多详细信息
我也通过ssh连接冗长连接到docker(以托管我们不在乎的主机/或/来宾)ssh -X -v user@192.168.123.123
因此EGL错误由调试详细信息包裹。
流媒体
这与nVidia的Deepstream和Gstreamer定制有关。
一些nvidia线程指出EGL需要一个“接收器”,但不需要X11显示器。
如果主机上的某个服务器在设计的端口上运行,则使用--net = host运行docker将允许客户端在docker中进行连接。
根据文档,Gpu使用了一些服务器。
$ DISPLAY
根据{{3}}:unset DISPLAY
提供了更好的结果。
在我的设置中,没有显示,EGL错误消失了。然后看不到流。