J'ai installé Docker sur ma machine où j'ai Ubuntu OS. Après que j'ai installé docker, quand je cours
sudo docker run hello-world
Tout va bien, mais je veux cacher le mot sudo
pour raccourcir la commande.
Si j'écris la commande sans le mot sudo
docker run hello-world
Cela affiche les éléments suivants:
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.See 'docker run --help'.
C'est arrivé la même chose quand j'essaye de faire
docker-compose up
Comment puis-je résoudre ça?
docker
docker-compose
Carlos Andres
la source
la source
Réponses:
Si vous souhaitez exécuter Docker en tant qu'utilisateur non root, vous devez l'ajouter au groupe Docker.
Tiré de la documentation officielle de docker: manage-docker-as-a-non-root-user
la source
sudo systemctl restart docker
docker
groupe accorde essentiellement un accès root , sans appliquer les politiques et audits sudo réguliers. Voir le numéro 9976 de GitHub pour plus de détails et une discussion.Après une mise à niveau, l'autorisation m'a été refusée. Faire les étapes des étapes de post-installation de «mkb» n'ont rien changé car mon utilisateur était déjà dans le groupe «docker»; Je recommence deux fois sans succès.
Après une heure de recherche, cette solution suivante a finalement fonctionné:
La solution est venue d' Olshansk .
On dirait que la mise à niveau a recréé le socket sans autorisation suffisante pour le groupe 'docker'.
Problèmes
Ce chmod dur ouvre un trou de sécurité et après chaque redémarrage, cette erreur recommence encore et encore et vous devez réexécuter la commande ci-dessus à chaque fois. Je veux une solution une fois pour toutes. Pour cela vous avez deux problèmes:
1) Problème avec
SystemD
: Le socket sera créé uniquement avec le propriétaire 'root' et le groupe 'root'.Vous pouvez vérifier ce premier problème avec cette commande:
Si tout cela est bon, vous devriez voir
root/docker
«nonroot/root
».2) Problème de connexion graphique : /superuser/1348196/why-my-linux-account-only-belongs-to-one-group
Vous pouvez vérifier ce deuxième problème avec cette commande:
Si tout est correct, vous devriez voir le groupe de dockers dans la liste. Sinon essayez la commande
si vous voyez alors le groupe docker c'est à cause du bug.
Solutions
Si vous parvenez à obtenir une solution de contournement pour la connexion graphique, cela devrait faire le travail:
Mais si vous ne pouvez pas gérer ce bogue, une solution pas si mauvaise pourrait être la suivante:
Cela fonctionne parce que vous êtes dans un environnement graphique et probablement le seul utilisateur de votre ordinateur. Dans les deux cas, vous avez besoin d'un redémarrage (ou d'un
sudo chmod 666 /var/run/docker.sock
)la source
:ro
fin ... dès que j'ai ajouté que j'étaisla source
newgrp
commande a demandé un mot de passe et n'a pas accepté mon mot de passe utilisateur. Au lieu de cela, asu - $USER
travaillé pour éviter de se déconnecter / se connecter.docker
groupe/var/run/docker.sock
la source
Je résous cette erreur avec la commande:
la source
Vous pouvez toujours essayer le
Manage Docker as a non-root user
paragraphe dans les https://docs.docker.com/install/linux/linux-postinstall/ docs.Après avoir fait cela également si le problème persiste, vous pouvez exécuter la commande suivante pour le résoudre:
la source
chmod 666
) est un désastre de sécurité ... Cela ne devrait jamais être recommandé.Cela résout mon problème.
la source
Pour résoudre ce problème, j'ai cherché où mon docker et docker-compose sont installés. Dans mon cas, a
docker
été installé dans/usr/bin/docker
et adocker-compose
été installé dans/usr/local/bin/docker-compose
chemin. Ensuite, j'écris ceci dans mon terminal:Pour docker:
À
docker-compose
:Maintenant, je n'ai pas besoin d'écrire dans mon menu fixe de commandes le mot
sudo
/ ************************************************* ********************** /
ERRATA:
@Mkasberg a commenté la meilleure solution à ce problème. Je cite un commentaire:
That might work, you might run into issues down the road. Also, it's a security vulnerability. You'd be better off just adding yourself to the docker group, as the docs say. sudo groupadd docker, sudo usermod -aG docker $USER.
Docs:
https://docs.docker.com/install/linux/linux-postinstall/Merci beaucoup!
la source
docker
groupe, comme le disent les docs.sudo groupadd docker
,sudo usermod -aG docker $USER
.lightdm et kwallet sont livrés avec un bogue qui semble ne pas passer les groupes supplémentaires lors de la connexion. Pour résoudre cela, je devais aussi, à côté
sudo usermod -aG docker $USER
, commenterà
dans
/etc/pam.d/lightdm
avant de redémarrer , pour le docker groupe d'avoir fait effet.bug: https://bugs.launchpad.net/lightdm/+bug/1781418 et ici: https://bugzilla.redhat.com/show_bug.cgi?id=1581495
la source
utilisez cette commande
puis redémarrez votre ordinateur, cela a fonctionné pour moi.
la source
Sérieusement les gars. N'ajoutez pas Docker dans vos groupes ou ne modifiez pas le socket posix (sans durcir SELinux), c'est un moyen simple de faire un root privesc. Ajoutez simplement un alias dans votre .bashrc, c'est plus simple et plus sûr comme: alias dc = 'sudo docker'.
la source
vous pouvez suivre ces étapes et cela fonctionnera pour vous:
sudo groupadd docker
sudo usermod -aG docker $USER
groups
newgrp docker
sudo chown root:docker /var/run/docker.sock
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R
Après ce test, vous pouvez exécuter
docker ps -a
la source
chown
trouver le fichier docker.sock.Après avoir installé Docker, créé le groupe 'Docker' et ajouté un utilisateur, modifiez le fichier d'unité de service Docker:
Ajoutez deux lignes dans la section [Service]:
Enregistrez le fichier (Ctrl-X, y, Entrée)
Exécutez et activez le service Docker:
la source
Après l'installation de Docker sur Centos. Lors de l'exécution de la commande ci-dessous, j'ai obtenu une erreur ci-dessous.
Modifier le groupe et l'autorisation pour docker.socket
Vérifiez en utilisant la commande docker ci-dessous
la source
sudo chmod 666 /var/run/docker.sock
cela m'a aidé pendant que j'obtenais une erreur, même pour me connecter au docker. Mais maintenant, cela fonctionne parfaitement dans mon système.
la source