0

在我的 Raspberry Pi 3 Model B 上,我想在 Docker 容器中运行python-mpv 。我的 Docker 版本是 18.02.0-ce,构建 fc4de44。Raspberry 和 Docker 容器都运行“Raspbian Stretch”。这是 Dockerfile:

FROM resin/rpi-raspbian:stretch

RUN apt-get update
RUN apt-get install -y python3-pip ipython3 mpv libmpv1 python3-setuptools vim git
RUN pip3 install --upgrade pip
RUN pip3 install python-mpv
CMD python3 -c "import mpv"

尝试在我的 Raspberry 上运行此容器时(docker build -t mpv .; docker run -it mpv),我收到此错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/mpv.py", line 46, in <module>
    backend = CDLL(sofile)
  File "/usr/lib/python3.5/ctypes/__init__.py", line 347, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libmmal_core.so: cannot open shared object file: No such file or directory

由于主机上可以使用 libmmal_core.so,因此我尝试仅将主机文件夹用作 Docker 容器的卷,但没有成功:

ifischer@raspi:~/mpv_docker $ docker run -v /opt/vc/lib:/opt/vc/lib -it mpv_web python3 -c "import mpv"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/mpv.py", line 46, in <module>
    backend = CDLL(sofile)
  File "/usr/lib/python3.5/ctypes/__init__.py", line 347, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libmmal_core.so: cannot open shared object file: No such file or directory

如何修复我的 Docker 容器以便它找到 libmmal_core.so?

4

1 回答 1

1

除了/opt/vc/lib作为卷挂载到 Docker 容器中之外,我还必须在 dockerfile 中设置环境变量 LD_LIBRARY_PATH 以指向要挂载的卷,以便 python-mpv 找到共享对象文件:

ENV LD_LIBRARY_PATH /opt/vc/lib

这就是我成功运行 Docker 容器的方式:

docker run -v /opt/vc/lib:/opt/vc/lib -it mpv
于 2018-02-12T18:39:27.740 回答