46 votes

Permission refusée lors de l'exécution de Docker après son installation en tant que Snap

J'ai installé Docker via le Software store, qui m'a indiqué qu'il s'agissait d'un paquet Snap. Ce qui me convient, mais malheureusement, toutes les commandes Docker que j'ai essayées ne fonctionnent pas :

$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/info: dial unix /var/run/docker.sock: connect: permission denied

Une idée sur la manière de résoudre ce problème ?

Editer : J'ai contourné le problème pour l'instant en installant Docker à partir de Dépôts propres à Docker ce qui pourrait s'avérer utile pour les personnes qui se pencheront sur cette question à l'avenir. Je laisse la question ouverte pour ceux qui veulent être en mesure de l'exécuter à partir du Snap, cependant.

59voto

Mike Coleman Points 691

Ceci provient de la page GitHub, avez-vous essayé ces étapes exactes ?

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ sudo snap disable docker
$ sudo snap enable docker

En Docker snap github

31voto

ADDB Points 1527

Le message d'erreur vous indique que votre utilisateur actuel ne peut pas accéder au moteur Docker, car vous n'avez pas les permissions d'accéder au socket unix pour communiquer avec le moteur.

Solution temporaire

Utiliser le sudo pour exécuter les commandes avec des autorisations élevées à chaque fois.

Solution permanente (proposée)

Ajouter l'utilisateur actuel au docker groupe. Pour ce faire, il suffit de taper

sudo usermod -a -G docker $USER

Vous devez vous déconnecter et vous reconnecter pour que l'appartenance au groupe prenne effet.

Fuente: techoverflow.net

7voto

Uddhav P. Gautam Points 361

Je suppose que votre nom d'utilisateur est déjà dans le groupe Docker. Pour le vérifier, lancez la commande suivante.

id -nG

Si ce n'est pas le cas, vous devez ajouter votre utilisateur au groupe Docker en utilisant la commande ci-dessous.

sudo groupadd docker
sudo usermod -aG docker $USER

Lorsque vous exécutez la commande, sudo systemctl start docker il crée un processus docker. Ce processus docker contient dockerd thread daemon. La commande crée également des docker.sock Socket Unix. Les docker.sock est continuellement écouté par dockerd thread daemon. Cela permet de faire de l'IPC au niveau du noyau avec docker.pid processus. Pour pouvoir utiliser ce socket docker, vous devez avoir les autorisations nécessaires au niveau du processus ( docker.pid ) et au niveau du fichier ( docker.sock ). L'exécution des deux commandes ci-dessous devrait donc résoudre votre problème. sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid

5voto

Nahshon paz Points 151
sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

ne nécessite pas de redémarrage et est plus sûr

1voto

Baskar Points 35

Vous devez ajouter l'utilisateur au groupe Docker ( voir la documentation officielle ).

Vous pouvez ajouter sudo devant la commande ou vous pouvez ajouter l'utilisateur dans le fichier docker en utilisant cette commande :

sudo usermod -aG docker <USER>

Déconnectez-vous et reconnectez-vous pour que votre appartenance à un groupe soit réévaluée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X