Неисправность при установке предохранителя в образе Debian Stretch Docker - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь соединить dir в образе Docker, используя gcsfuse.Я использую растягиваемый образ Debian и не могу работать с пакетом fuse.

Я попытался установить fuse как через apt-get, так и собрать из источника через репозиторий git.У обоих были свои проблемы.

1: После apt-get появляется сообщение об успешной установке fuse.

root@a7d6f712fab9:/queue# apt-get install fuse
Reading package lists... Done
Building dependency tree
Reading state information... Done
fuse is already the newest version (2.9.7-1+deb9u2).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
root@a7d6f712fab9:/queue# apt-get install libfuse-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libfuse-dev is already the newest version (2.9.7-1+deb9u2)

Однако при запуске modprobe fuse (что не удается при попытке монтирования gcsfuse):

root@a7d6f712fab9:/queue# modprobe fuse
modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.9.125-linuxkit/modules.dep.bin'
modprobe: FATAL: Module fuse not found in directory /lib/modules/4.9.125-linuxkit

2: При использовании tar.gz из источника, meson доступен только в версии 0.37, тогда как libfuse требует, чтобы meson> 0.38 был собран правильно (из более ранних версий).

Вот мой Dockerfile:

FROM python:3.6-slim

RUN apt-get update \
    && apt-get install -y libfuse-dev \
    curl \
    gnupg \
    apt-utils \
    lsb-release \
    kmod
RUN export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s` \
    && echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO     main" | tee /etc/apt/sources.list.d/gcsfuse.list \
    && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
RUN apt-get update \
    && apt-get install -y gcsfuse

COPY . /queue
WORKDIR /queue

Я бы хотел, чтобы modprobe fuse действительно работал, или чтобы понять, как я могу построить fuse / modprobe таким образом, чтобы пакет определялся через modprobe,

Спасибо!

1 Ответ

0 голосов
/ 31 декабря 2018

Контейнеры Docker используют ядро ​​хоста.Поэтому, если модуль ядра нуждается в загрузке, вы должны загрузить его на хост-компьютер, а не в Docker.

...