Docker 容器 运行 python-mpv: 无法打开共享对象文件 libmmal_core.so
Docker container running python-mpv: Cannot open shared object file libmmal_core.so
在我的 Raspberry Pi 3 Model B 上,我想 运行 python-mpv 放在 Docker 容器中。我的Docker版本是18.02.0-ce,build fc4de44。 Raspberry 和 Docker 容器 运行 "Raspbian Stretch"。
这是 Docker 文件:
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 运行 -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?
除了将 /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
在我的 Raspberry Pi 3 Model B 上,我想 运行 python-mpv 放在 Docker 容器中。我的Docker版本是18.02.0-ce,build fc4de44。 Raspberry 和 Docker 容器 运行 "Raspbian Stretch"。 这是 Docker 文件:
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 运行 -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?
除了将 /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