Dans les pages de documentation de Docker, tous les exemples de commandes sont présentés sans sudo
, comme celui-ci:
docker ps
Sur Ubuntu, le binaire est appelé docker.io
. Cela ne fonctionne pas non plus sans sudo:
sudo docker.io ps
Comment puis-je configurer Docker pour qu'il ne soit pas nécessaire de préfixer chaque commande Docker avec sudo?
apt-cache policy docker-engine
(apt url devrait être de dockerproject.org)Réponses:
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
À partir du docker 19.3, ceci est obsolète (et plus dangereux que nécessaire):
Le manuel de docker a ceci à dire à ce sujet:
Important à lire: étapes de post-installation pour Linux (il contient également des liens vers les détails de Docker Daemon Attack Surface ).
Ajoutez le groupe de dockers s'il n'existe pas déjà:
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:
Faites un
newgrp docker
ou connectez-vous / déconnectez-vous pour activer les modifications apportées aux groupes.Vous pouvez utiliser
pour vérifier si vous pouvez exécuter docker sans sudo.
la source
newgrp docker
n'a pas fonctionné pour moi, j'ai dû me déconnecter.docker login
, vous pouvez trouver que le.docker
dossier créé dans votre dossier personnel appartient àroot
. ainsi vous rencontrer cet avertissement lors de l' exécution des commandes de docker:WARNING: Error loading config file:/home/myuser/.docker/config.json - stat /home/myuser/.docker/config.json: permission denied
. J'ai fait mon utilisateur.docker
dossier accessible sans sudo comme ceci:sudo chgrp -hR docker ~/.docker && sudo chown -R myuser ~/.docker
. lechgrp
ne semble pas aider, donc probablement que je devrais recommander que l'étape chown.Pour exécuter la commande docker sans
sudo
, vous devez ajouter votre utilisateur (qui dispose des privilèges root) au groupe docker. Pour cette commande, exécutez la commande suivante:Maintenant, demandez à l'utilisateur de se déconnecter, puis reconnectez-vous. Cette solution est bien expliquée ici avec le processus d’installation approprié.
la source
Le mécanisme par lequel l’ajout d’un utilisateur au groupe
docker
accorde l’autorisation d’exécuter le menu fixe consiste à accéder au socket du menu fixe à/var/run/docker.sock
. Si le système de fichiers qui le contient/var/run
a été monté avec les ACL activées, ceci peut également être réalisé via les ACL.Je ne fais que l'inclure par souci de complétude.
En général, je recommande d'éviter les listes de contrôle d'accès chaque fois qu'une bonne alternative basée sur des groupes est disponible: il est préférable que les privilèges d'un système puissent être compris en ne regardant que les appartenances à un groupe. Le fait d'analyser le système de fichiers à la recherche d'entrées dans la liste de contrôle d'accès afin de comprendre les privilèges système constitue un fardeau supplémentaire pour les audits de sécurité.
Avertissement 1 : Ceci a la même
root
équivalence que l'ajoutusername
audocker
groupe. Vous pouvez toujours démarrer un conteneur de manière à avoirroot
accès au système de fichiers hôte.Avertissement 2 : Les listes de contrôle d'accès sont beaucoup plus difficiles pour les audits de sécurité que la sécurité basée sur le groupe. Évitez probablement les ACL si possible lorsque vous pouvez utiliser des groupes, au moins dans des environnements pertinents pour l'audit.
la source