Docker 'rootless' mode

Bambusa29

Chevalier Jedi
10 Avril 2022
411
172
88
Bonjour tout le monde,

J'ai voulu tester une configuration 'Debian 11 - podman - Cockpit' sur mon NUC mais je n'ai été pas du tout convaincu malgré les articles enthousiaste que j'avais pu lire sur le sujet :p
Pour ceux qui n'en ont jamais entendu parler de 'podman', il se veut le successeur de Docker et corrige son principale défaut qui est la sécurité.

Du coup j'ai voulu tester une installation d'OMV 6 avec un docker 'rootless' (possible depuis les dernières versions de docker) avant de tout casser ma config actuelle.
Bon ben ca fonctionne !! mais ce n'est pas trivial comme installation... en suivant les différents tutos, cela semble fonctionner tout seul, mais cela n'a pas été le cas !!

Dans tous les tutos il s'arrête à un simple lancement de containeur test; Cela fonctionnait aussi chez moi.
En cherchant à aller plus loin j'ai rencontré des problèmes, mais après un peu de config on arrive à tout faire fonctionner correctement :cool:

Tous mes containeurs (portainer inclus) et mon 'deamon docker' sont bien lancés en tant que simple utilisateur : 'numdocker' ou via un UID utilisateur, et plus aucun containeurs lancés en tant que 'root'.


rootless_portainer03.png


rootless_portainer04.png
 
Salut :)
Sympa tout cela :D

On attend les tutos maintenant :love:
Je suis toujours en test avec la version 'rootless' sur mon NUC, la philosophie change pas mal par rapport à une utilisation docker 'normal'.
Il y a des restrictions en 'rootless' mais qui peuvent être contourner pour certaines avec de la config :p. Par contre le gros gain est au niveau de la sécurité...
Sur mon NUC j'ai fais l'Install à partir d'une installation vierge d'OMV 6.x.

Je suis aussi en train de préparer tranquillement une procédure pour un passage transparent d'une version docker existante en rootless (c'est un peu différent).
 
  • J'aime
Réactions: EVO
Je suis tombé sur un sacré os avec le mode 'rootless' : Il parait impossible de créer une interface réseaux 'macvlan' dans Docker.
J'en ai besoin pour faire fonctionner PI-Hole sur mon LAN....

Apparemment je ne suis pas le seule a avoir rencontré ce problème de Macvlan en mode 'rootless' et malheureusement je n'ai vu aucunes solutions apportées sur les différents forums anglophones. Les réseaux 'macvlan' ne sont pourtant pas lister officiellement comme une limitation du mode 'rootless', donc à priori il devrait y avoir une solution pour contourner cela....
Je continue de chercher 😅
 
J'ai fini par enlever le containeur Pi-Hole et faire une installation standard de Pi-Hole hors Docker. Ce n'est pas plus mal, cela évite d'utiliser un VLan sur le NAS et dans Docker. J'ai du modifier une régle du firewall, j'avais un containeur qui ne fonctionnait plus que partiellement (Uptime-Kuma).
C'était la dernière étape qui coinçait avant de pouvoir passer mon NAS au "rootless"; je vais faire ca tranquillement ces jours ci :cool:
 
  • J'aime
Réactions: jeu2 et EVO
Merci pour le partage de ton expérience Docker 'rootless'.
On voit très peu d'articles sur la sécurité de docker qui est pourtant un vrai probleme.
Je lirai tes retours avec beaucoup d'attention.
Merci à toi.
 
Hello 👋
C'est en effet un sujet très intéressant :)

j'ai lu diverses choses sur le mode rootloess, qui a de beaux avantages, mais aussi de sacrés inconvénients...
Certains conteneurs posent soucis apparemment et j'ai vu passer sur les docs linuxserver qu'il n'était pas conseillé de faire du rootless avec leurs images.
j'ai pas vraiment creusé ^^

Par contre, @Bambusa29 , si tu écris un tuto, je me ferais un plaisir de le lire ^^ et peut-être de le tenter ;)
 
J'avais fais un article sur mon blog sur la sécurisation de Docker (sécurisation du daemon + des containeurs) pour ceux qui ne voudraient pas passez au mode 'rootless'.
Il y a des choses simples à faire pour sécuriser un peu mieux Docker mais le gros problème reste le 'daemon' qui est lancé en 'root' et qui pose un gros problème de sécurité pour les containeurs qui montent '/var/run/docker.sock' en tant que root (escalation possible même en mode 'user-namespace').
Je ferais un tuto sur le forum à ce sujet s'il y a des amateurs.
 
  • J'aime
Réactions: jeu2
C'est bien pour cela qu'il ne faut pas installer n'importe quoi. Un conteneur n'est pas isolé de l'hôte comme avec une machine virtuelle.
Pourtant c'est ce qu'on peut croire des lectures faites sur internet...

Pour le socks, il ne faut pas le mettre en volume sur n'importe quel conteneur. Limité son usage aux conteneurs qui en ont vraiment besoin, comme Portainer :)
 
Le containeur n'est pas isolé comme une VM mais il n'a accès qu'à son environnement et aux volumes qui sont montés lors de son lancement.
Il n'a pas accès au volume système '/' et au reste du réseau.

Par exemple, si on lance une image 'Ubuntu' avec 'bash' en docker, on n'a accès qu'à l'environnement du docker et pas au reste du système :

docker.png
 
Je suis en train de commencer le tuto, je préfère le faire au fur et à mesure de la bascule, sinon je risque d'oublier un truc dans le tuto...

Docker a aussi des mécanismes visant à limiter l'utilisation des ressources du kernel. Il faut les inclure au lancement des containeurs (cap_drop, pids/mem/cpu limit, appArmor...).
 
  • J'aime
Réactions: MilesTEG
J'ai terminé le passage de mon NAS en rootless et j'ai redémarré tous mes containeurs.
J'ai terminé le tuto aussi, je l'ai fait en live sur mon blog mais j'ai eu des imprévus tout au long du transfert 😅
La procédure pour le passage d'une installation Docker existante en 'Rootless' est comme même galère, c'est plus laborieux que de partir sur une installation vierge.
J'ai encore un problème de droit sur mes fichiers de Backup sur une des sauvegardes Duplicati (simple copie en locale) à résoudre. Les droits et propriétés des répertoires montés dans les containeurs sont hyper importants en mode 'rootlees'.
Je vais commencer le tuto cette semaine sur le forum, mais en plusieurs étapes car c'est un gros morceau :D