web-dev-qa-db-fra.com

Docker chargeant des modules du noyau

J'ai essayé d'installer un module du noyau, xfsprogs. Il a été installé avec succès à l'intérieur d'un conteneur. C'est vraiment surprenant, mais lsmod ne répertorie pas ce module dans le conteneur ou dans le système hôte. Comment un nouveau module de noyau peut-il être chargé dans un conteneur? (CentOS container, Ubuntu Host)

12
user4725754

Les conteneurs interagissent avec le noyau via des appels système et n'incluent aucune partie du noyau ou des modules du noyau à l'intérieur du conteneur. C'est l'une des raisons pour lesquelles les conteneurs sont conçus pour être légers et portables. Les xfsprogs sont également des programmes d'espace utilisateur et non des modules du noyau.

Comment un nouveau module de noyau peut-il être chargé dans un conteneur? (Conteneur CentOS, hôte Ubuntu)

Le module doit être chargé sur votre système d'exploitation hôte, et non à partir du conteneur Docker.

12
askb
  • Exécutez le conteneur en mode privilégié (--privileged)
  • Ajouter toutes les capacités (--cap-add = ALL)
  • montez Host/lib/modules dans le conteneur (-v/lib/modules:/lib/modules)

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

Ici, toutes les capacités Linux sont ajoutées afin que les capacités puissent être affinées.

13
Tinkal Gogoi

Falco est un exemple de conteneur qui charge un module du noyau dans le cadre de son processus de démarrage.

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
1
Edward Anderson