2015-10-08 3 views
7

Я попытался установить модуль ядра, xfsprogs. Он был успешно установлен внутри контейнера. Это действительно удивительно, но lsmod не перечисляет этот модуль внутри контейнера или в хост-системе. Как может новый модуль ядра загружается в контейнер? (CentOS контейнер, Ubuntu хозяин)Модули ядра загрузки докеров

+0

'xfsprogs' - это ** пакет **, при условии, что библиотеки ** пользовательского пространства **. 'lsmod' показывает ** модули ядра **, загруженные в ядро. – Tsyvarev

+0

Но тогда какой модуль необходим для 'xfs' fs. "поддержка"? –

+1

Для создания системы, способной монтировать файловые системы, отформатированные с помощью 'xfs', необходимо создать ядро ​​с включенным модулем xfs (в файле конфигурации). Если 'sudo modprobe xfs' (работает на хост-машине) сообщает об ошибке, что модуль не найден, ваше ядро ​​не поддерживает файловую систему xfs. – Tsyvarev

ответ

7

Контейнеры взаимодействуют с ядром через системные вызовы и не включают в себя какой-либо части ядра или модулей ядра внутри контейнера. Это одна из причин, по которой контейнеры были легкими и переносимыми. Также xfsprogs - это программы пользовательского пространства, а не модули ядра.

Как может новый модуль ядра загружен в контейнер? (CentOS контейнер, Ubuntu хост)

модуль должен быть загружен на ОС хоста, а не из контейнера Докер.

7
  • Выполнить контейнер в привилегированном режиме (--privileged)
  • Добавить все возможности (--cap добавьте = ALL)
  • монтирования хост/Библиотека/модули в контейнер (-v/Lib/модули:/Библиотека/модули)

docker run --name container_name --privileged --cap-add=ALL -d -v /dev:/dev -v /lib/modules:/lib/modules image_id

Здесь все возможности Linux добавлена ​​поэтому возможности могут быть уточнены.

+1

Что следует использовать при запуске windows или macosx версии докера? Где модули ядра Linux Linux? – user725408

+0

В панели инструментов docker для окон, в которой запущен хост boot2docker linux под ним, вы можете ssh в нее и увидеть модули под/lib/modules –

1

Falco - пример контейнера, который загружает модуль ядра как часть процесса запуска.

docker run -i -t --name falco --privileged \ 
    -v /var/run/docker.sock:/host/var/run/docker.sock \ 
    -v /dev:/host/dev \ 
    -v /proc:/host/proc:ro \ 
    -v /boot:/host/boot:ro \ 
    -v /lib/modules:/host/lib/modules:ro \ 
    -v /usr:/host/usr:ro \ 
    sysdig/falco 
Смежные вопросы