Bonne nouvelle: le nouveau menu fixe (version 19.03 (actuellement expérimentale)) sera capable d'exécuter sans racine la résolution des problèmes pouvant survenir avec un utilisateur root. Plus besoin de jouer avec les autorisations élevées, les droits root et tout ce qui pourrait ouvrir votre ordinateur lorsque vous ne le souhaitez pas.
Vidéo à ce sujet de [DockerCon 2019] Renforcement du démon Docker avec mode sans racine
Quelques mises en garde au mode Docker sans racine
Les ingénieurs Docker disent que le mode sans racine ne peut pas être considéré comme un remplacement de la suite complète des fonctionnalités du moteur Docker. Certaines limitations au mode sans racine incluent:
- Les contrôles de ressources cgroups, les profils de sécurité apparmor, les points de contrôle / restauration, les réseaux superposés, etc. ne fonctionnent pas en mode sans racine.
- L'exposition des ports des conteneurs nécessite actuellement un processus manuel d'aide socat.
- Seules les distributions basées sur Ubuntu prennent en charge les systèmes de fichiers superposés en mode sans racine.
- Le mode sans racines est actuellement fourni uniquement pour les générations nocturnes qui peuvent ne pas être aussi stables que vous êtes habitué.
À partir du docker 19.3, ceci est obsolète (et plus dangereux que nécessaire):
Le manuel de docker a ceci à dire à ce sujet:
Donner un accès non root
Le démon docker s'exécute toujours en tant qu'utilisateur root et, depuis la version 0.5.2 de Docker, il se lie à un socket Unix au lieu d'un port TCP. Par défaut, ce socket Unix appartient à l'utilisateur root et vous pouvez donc y accéder par défaut avec sudo.
A partir de la version 0.5.3, si vous (ou votre installateur Docker) créez un groupe Unix appelé docker et y ajoutez des utilisateurs, le démon docker rendra la propriété de la socket Unix en lecture / écriture par le groupe docker au démarrage du démon. . Le démon docker doit toujours être exécuté en tant qu'utilisateur root, mais si vous exécutez le client docker en tant qu'utilisateur du groupe de menus, vous n'avez pas besoin d'ajouter sudo à toutes les commandes du client. À partir de la version 0.9.0, vous pouvez spécifier qu'un groupe autre que le menu fixe doit posséder le socket Unix avec l'option -G.
Avertissement: le groupe de menus fixe (ou le groupe spécifié avec -G) est équivalent à la racine; voir Détails de la surface d'attaque du démon Docker et cet article de blog sur Pourquoi ne permettons-nous pas à des utilisateurs non root d'exécuter Docker dans CentOS, Fedora ou RHEL (merci, michael-n).
Dans la récente version du mode sans racine expérimental sur GitHub , les ingénieurs mentionnent que ce mode permet d’exécuter dockerd en tant qu’utilisateur non privilégié, à l’aide des noms d’espaces utilisateur (7), d’espaces de noms de montagnes (7) et (7).
Les utilisateurs doivent exécuter dockerd-rootless.sh au lieu de dockerd.
$ dockerd-rootless.sh --experimental
Le mode Rootless étant expérimental, les utilisateurs doivent toujours exécuter dockerd-rootless.sh avec –experimental.
Important à lire: étapes de post-installation pour Linux (il contient également des liens vers les détails de Docker Daemon Attack Surface ).
Gérer Docker en tant qu'utilisateur non root
Le démon docker se lie à un socket Unix au lieu d’un port TCP. Par défaut, ce socket Unix appartient à l'utilisateur root et les autres utilisateurs ne peuvent y accéder qu'en utilisant sudo. Le démon docker est toujours exécuté en tant qu'utilisateur root.
Si vous ne souhaitez pas utiliser sudo lorsque vous utilisez la commande docker, créez un groupe Unix appelé docker et ajoutez-lui des utilisateurs. Lorsque le démon docker démarre, il rend la propriété du socket Unix accessible en lecture / écriture au groupe de docker.
Ajoutez le groupe de dockers s'il n'existe pas déjà:
sudo groupadd docker
Ajoutez l'utilisateur connecté "$ USER" au groupe de menus. Modifiez le nom d'utilisateur pour qu'il corresponde à votre utilisateur préféré si vous ne souhaitez pas utiliser votre utilisateur actuel:
sudo gpasswd -a $USER docker
Faites un newgrp docker
ou connectez-vous / déconnectez-vous pour activer les modifications apportées aux groupes.
Vous pouvez utiliser
docker run hello-world
pour vérifier si vous pouvez exécuter docker sans sudo.