Comment corriger l'erreur docker: Got permission denied ?

Grâce à l'outil Docker, vous pouvez virtualiser des environnements pour travailler selon votre souhait. Cela apporte une sécurité améliorée ainsi qu'un grand confort d'utilisation. Lorsque vous l'installez sur votre système Linux, vous devez être authentifié en tant que root pour pouvoir lancer une machine virtuelle. Si vous souhaitez pouvoir le faire en tant que simple utilisateur, alors vous allez devoir effectuer quelques manipulations.

Pour qu'un utilisateur puisse se servir de la commande "docker", il doit appartenir au groupe "docker". Si ce groupe n'existe pas encore sur votre ordinateur, vous devez le créer grâce à la commande "groupeadd".

sudo groupadd docker

Ajoutez ensuite l'utilisateur au groupe, avec la commande "usermod". L'option "-aG" permet d'ajouter un utilisateur au groupe qui suit. La variable d'environnement "$USER" contient l'utilisateur en cours, vous pouvez donc copier-coller la commande sur votre ordinateur.

sudo usermod -aG docker $USER

Utilisez ensuite la commande "newgrp" pour vous connecter au groupe "docker". Cette commande vous évite de devoir vous déconnecter puis reconnecter à votre session.

newgrp docker

Vous pouvez ensuite lancer Docker directement sans être root. Si vous obtenez toujours un message d'erreur, redémarrez l'ordinateur.

docker run ma-machine-virtuelle

Si malgré le redémarrage, vous obtenez toujours un message d'erreur, cela peut venir d'une autre modification due à une mise à jour de Docker. La socket qui est utilisée pour communiquer par Docker doit normalement appartenir au groupe "docker". Mais il peut arriver qu'elle soit créée par l'utilisateur root, ce qui empêche pour un utilisateur normal de pouvoir lancer Docker. En changeant les droits sur la socket, on peut résoudre immédiatement le problème :

sudo chmod 666 /var/run/docker.sock

Cependant, cette solution est temporaire et la commande doit être exécutée à chaque démarrage de l'ordinateur. Pour obtenir une solution pérenne, il faut modifier les droits du fichier "docker.socket". Il faut donner les droits au groupe "docker" pour écrire dans ce fichier et donner la propriété du fichier à ce groupe. Cela permettra de lancer votre machine virtuelle sans être root.

//Le fichier appartient au groupe "docker"
sudo chgrp docker /lib/systemd/system/docker.socket
//Le groupe a les droits d'écriture sur le fichier
sudo chmod g+w /lib/systemd/system/docker.socket

Si cette solution ne fonctionne pas, une autre solution consiste à donner la propriété au groupe de l'utilisateur. Cette solution n'est intéressante que si l'utilisateur est le seul à utiliser Docker sur cet ordinateur.

sudo chgrp $USER /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket