为Python/Kivy构建的Docker容器在开始运行时崩溃

为Python/Kivy构建的Docker容器在开始运行时崩溃,python,docker,kivy,x11,sdl-2,Python,Docker,Kivy,X11,Sdl 2,我试图运行一个用Python和Kivy语言编写的Debian/Jesse GUI应用程序,但在尝试运行容器时遇到了一个问题。 因此,我编写了Docker文件,构建了图像,并在容器运行到一半时解决了这个问题。从外观上看,问题与在主机和SDL2/X11容器之间建立连接有关。如果有人能就此提出一些想法,我们将不胜感激。我已在下面共享了我的Dockerfile和错误。 提前谢谢 Dockerfile- FROM resin/rpi-raspbian:jessie RUN apt-get update

我试图运行一个用Python和Kivy语言编写的Debian/Jesse GUI应用程序,但在尝试运行容器时遇到了一个问题。 因此,我编写了Docker文件,构建了图像,并在容器运行到一半时解决了这个问题。从外观上看,问题与在主机和SDL2/X11容器之间建立连接有关。如果有人能就此提出一些想法,我们将不胜感激。我已在下面共享了我的Dockerfile和错误。 提前谢谢

Dockerfile-

FROM resin/rpi-raspbian:jessie

RUN apt-get update && apt-get install -y 

libsdl2-dev 
libsdl2-image-dev
libsdl2-mixer-dev 
libsdl2-ttf-dev 

pkg-config 
libgl1-mesa-dev 
libgles2-mesa-dev 
python-setuptools 
libgstreamer1.0-dev 
git-core
python-dev 
gcc 
python-pip 
gstreamer1.0-plugins-base 
gstreamer1.0-plugins-good 
gstreamer1.0-plugins-bad 
gstreamer1.0-plugins-ugly 
gstreamer1.0-alsa 
gstreamer1.0-omx 
xclip
libmtdev-dev 
python-pygame

RUN pip install cython

RUN pip install git+https://github.com/kivy/kivy.git@master

ENV XDG_RUNTIME_DIR=/run/user/1000

ADD animate.py /

CMD [“python”,“animate.py”]
下面是错误日志-

pi@raspberrypi:~/dockTest $ docker container run kivydock
[WARNING] [Config ] Older configuration version detected (0 instead of 20)
[WARNING] [Config ] Upgrading configuration in progress.
[INFO ] [Logger ] Record log in /root/.kivy/logs/kivy_18-01-16_0.txt
[INFO ] [Kivy ] v1.10.1.dev0, git-00c161d, 20180115
[INFO ] [Python ] v2.7.9 (default, Sep 17 2016, 20:26:04)
[GCC 4.9.2]
[INFO ] [Factory ] 194 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [OSC ] using for socket
[INFO ] [Window ] Provider: sdl2([‘window_egl_rpi’] ignored)
[CRITICAL] [Window ] Unable to find any valuable Window provider.
egl_rpi - ImportError: cannot import name bcm
File “/usr/local/lib/python2.7/dist-packages/kivy/core/init.py”, line 59, in core_select_lib
fromlist=[modulename], level=0)
File “/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_egl_rpi.py”, line 12, in 
from kivy.lib.vidcore_lite import bcm, egl

sdl2 - RuntimeError: No available video device
File “/usr/local/lib/python2.7/dist-packages/kivy/core/init.py”, line 67, in core_select_lib
cls = cls()
File “/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_sdl2.py”, line 140, in init
super(WindowSDL, self).init()
File “/usr/local/lib/python2.7/dist-packages/kivy/core/window/init.py”, line 960, in init
self.create_window()
File “/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_sdl2.py”, line 272, in create_window
self.fullscreen, resizable, state)
File “kivy/core/window/_window_sdl2.pyx”, line 93, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
File “kivy/core/window/_window_sdl2.pyx”, line 66, in kivy.core.window._window_sdl2._WindowSDL2Storage.die

x11 - ImportError: No module named window_x11
File “/usr/local/lib/python2.7/dist-packages/kivy/core/init.py”, line 59, in core_select_lib
fromlist=[modulename], level=0)

[CRITICAL] [App ] Unable to get a Window, abort.

您需要将X11文件夹从主机系统装载到docker映像上。。。根据我的经验,让kivy在集装箱里跑是件很痛苦的事。。。你也许可以用一些vnc的东西让它工作,但这是一个巨大的痛苦和真正脆弱的…干杯@JoranBeasley@JoranBeasley你能再多说一点吗?除了作为一个pia,你能让它工作吗?我已经在容器中制作了一些图形以显示在主机上,但是对于kivy,根据日志,它找不到任何合适的窗口提供程序。谢谢。我确实让它工作了。。。但它不可靠,而且有一些疯狂的奇怪的滞后。。。太糟糕了我想大概花了3天时间才开始工作。。。一周后它就坏了,我懒得再让它工作了(如果他们(kivy)能提供一个带有vnc docker映像的x11版本,或者提供一个很好的逐步解决方法,那就太好了)