Извлечение образа файловой системы ext2 в сборке Docker

#docker #dockerfile

#docker #dockerfile

Вопрос:

Я пытаюсь извлечь образ файловой системы ext2 initrd как часть сборки Dockerfile.

До сих пор я пробовал эти подходы:

  • Монтирование как устройство обратной связи. Это невозможно сделать из-за разрешений. Кажется, что вы можете переопределить это с помощью —privileged , но это может быть сделано только для ‘docker run’, а не ‘docker build’.
  • libguestfs. Я не смог заставить это работать, и для его запуска потребовался огромный образ Fedora.
  • Извлечение с использованием 7z. К сожалению, это не сохраняет разрешения, и символические ссылки преобразуются в обычные файлы. Я не могу найти никаких параметров, которые бы их сохраняли.

Я почти пытаюсь загрузить initrd с помощью QEMU, создаю архив корневых файлов и копирую его с помощью виртуальной сети, но, конечно, есть более простой способ. Я удивлен, что нет пользовательских инструментов для простого извлечения образа файловой системы.

Я мог бы вручную подготовить архив с использованием метода loopback, но смысл использования Docker в том, чтобы автоматизировать это.

Комментарии:

1. Нет, я не думал, что существует реализация ext filesystem в формате FUSE. Есть ли?

2. Я нашел это: github.com/alperakcan/fuse-ext2 , но, похоже, мне придется скомпилировать его самостоятельно, поскольку пакетов для Linux нет.

3. Мне удалось скомпилировать его, но он выдает ошибку: fuse: устройство не найдено, сначала попробуйте ‘modprobe fuse’, и ‘modprobe fuse’ тоже не работает