Comment utiliser docker sans sudo?

630

Sur les pages de documentation de Docker, tous les exemples de commandes sont affichés sans sudo , comme celui-ci:

docker ps

Sous Ubuntu, le binaire s'appelle docker.io . Il ne fonctionne pas non plus sans sudo:

sudo docker.io ps

Comment puis-je configurer Docker pour ne pas avoir besoin de préfixer chaque commande Docker avec sudo?

    
posée Flimm 06.06.2014 - 10:17
la source

3 réponses

941

Le manuel du docker a ceci à dire :

  

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, le démon docker se lie à un socket Unix au lieu d'un port TCP. Par défaut, le socket Unix appartient à l'utilisateur root et, par défaut, vous pouvez y accéder avec sudo.

     

À 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 le propriétaire du socket docker accessible en lecture / écriture par le groupe le démon démarre. Le démon docker doit toujours s'exécuter en tant qu'utilisateur root, mais si vous exécutez le client docker en tant qu'utilisateur du groupe docker, vous n'avez pas besoin d'ajouter sudo à toutes les commandes client. A partir de la version 0.9.0, vous pouvez spécifier qu'un groupe autre que docker doit posséder le socket Unix avec l'option -G.

     

Avertissement: le groupe de menus fixes (ou le groupe spécifié avec -G) est équivalent à la racine; voir les détails de Docker Daemon Attack Surface et cet article de blog sur Pourquoi Ne laissez pas les utilisateurs non root exécuter Docker dans CentOS, Fedora ou RHEL (merci michael-n).

Important à lire: étapes post-installation pour Linux (il contient également des liens vers < a href="https://docs.docker.com/engine/security/security/#/docker-daemon-attack-surface"> Détails de la surface d'attaque du démon Docker ).

  

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, le socket Unix appartient à l'utilisateur root et les autres utilisateurs ne peuvent y accéder qu'à l'aide de sudo. Le démon docker s'exécute toujours 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-y des utilisateurs. Au démarrage du démon docker, le groupe docker devient propriétaire du socket Unix en lecture / écriture.

  • Ajoutez le groupe de menus fixes s'il n'existe pas déjà:

    sudo groupadd docker
    
  • Ajoutez l'utilisateur connecté "$ USER" au groupe de menus fixes. 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 déconnectez-vous / pour activer les modifications apportées aux groupes.

  • Vous pouvez utiliser

    docker run hello-world
    

    pour vérifier si vous pouvez lancer docker sans sudo.

réponse donnée Rinzwind 06.06.2014 - 10:24
la source
150

Pour exécuter la commande docker sans sudo , vous devez ajouter votre utilisateur (qui a les privilèges root) au groupe docker. Pour cette commande, exécutez la commande suivante:

 sudo usermod -aG docker $USER

Maintenant, l'utilisateur se déconnecte, puis reconnectez-vous. Cette solution est bien expliquée ici avec un processus d’installation correct.

    
réponse donnée Rohini Choudhary 27.02.2016 - 20:57
la source
23

Le mécanisme par lequel l’ajout d’un utilisateur au groupe docker permet d’exécuter docker consiste à accéder au socket de docker à /var/run/docker.sock . Si le système de fichiers qui contient /var/run a été monté avec les ACL activées, cela peut également être réalisé via les ACL.

sudo setfacl -m user:username:rw /var/run/docker.sock

Je ne fais qu'inclure cela pour être complet.

En général, je vous recommande d’éviter les listes de contrôle d’application 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 examinant uniquement les appartenances à un groupe. Le fait de devoir analyser le système de fichiers pour rechercher les entrées ACL afin de comprendre les privilèges du système constitue une charge supplémentaire pour les audits de sécurité.

    
réponse donnée Christian Hujer 01.12.2017 - 17:08
la source

Lire d'autres questions sur les étiquettes