Контейнер Docker, выполняющий python-mpv: невозможно открыть общий объектный файл libmmal_core.so

На моем Raspberry Pi 3 Model B я бы хотел запустить python-mpv внутри контейнера Docker. Моя версия 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 (сборка докера -t mpv .; Запуск докера -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?

1 ответ

Помимо монтажа /opt/vc/lib как том в контейнере Docker, я должен был установить переменную окружения LD_LIBRARY_PATH внутри моего dockerfile, чтобы он указывал на том, который нужно смонтировать, чтобы python-mpv находил общие объектные файлы:

ENV LD_LIBRARY_PATH /opt/vc/lib

Вот как я успешно запускаю свой контейнер Docker:

docker run -v /opt/vc/lib:/opt/vc/lib -it mpv
Другие вопросы по тегам