Le service Docker fonctionne clairement:
$ systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2015-12-28 19:20:50 GMT; 3 days ago
Docs: https://docs.docker.com
Main PID: 1015 (docker)
CGroup: /system.slice/docker.service
└─1015 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs
$ ps wuf -u root | grep $(which docker)
root 1015 0.0 0.3 477048 12432 ? Ssl 2015 2:26 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs
Cependant, Docker lui-même refuse de lui parler:
$ docker info
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Je courais la configuration par défaut Docker , qui est, je ne l' ai pas changé tous les /etc
dossiers relatifs à ce service.
Quel pourrait être le problème ici?
arch-linux
docker
l0b0
la source
la source
sudo systemctl start docker
démon ne fonctionnait vraiment pas ...Cette question a déjà été répondue, mais voici une information supplémentaire.
Que vous soyez sur Arch ou sur une autre distribution comme Fedora ou Ubuntu, Docker utilise un fichier socket pour communiquer. Lorsque vous exécutez des
docker
commandes, il utilise ce socket pour parler au démon Docker. Bien sûr, le démon doit être en cours d'exécution (et il est souvent désactivé par défaut), mais si votre utilisateur ne peut pas accéder au socket, il ne pourra pas non plus communiquer avec le démon.Vous devez d'abord installer Docker à partir du référentiel de la distribution. Certaines personnes téléchargent un script d'installation et le dirigent vers un shell (
curl ... | sh
), mais il est recommandé de l'installer à partir du référentiel afin qu'il puisse être mis à jour facilement.Cambre:
Feutre:
Comme mentionné ci-dessus, le démon peut être désactivé par défaut. Si vous souhaitez utiliser Docker, le démon doit être en cours d'exécution.
Activez-le (pour qu'il démarre au démarrage):
Démarrez-le maintenant (ou redémarrez):
Maintenant, par défaut (si le groupe docker est manquant), le socket Docker appartient à root:
C'est pourquoi un utilisateur régulier n'est pas en mesure de parler au démon docker. Un utilisateur ordinaire ne dispose pas des autorisations suffisantes pour accéder au socket. Il n'est pas en mesure d'atteindre le démon, il suppose donc qu'il n'est pas en cours d'exécution et affiche cette erreur:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
C'est pourquoi de nombreuses personnes démarrent simplement toutes les commandes Docker en tant que root, en utilisant
sudo
. Mais comme décrit dans l'autre réponse, Docker a son propre mécanisme pour cela, donc l'utilisation de sudo n'est pas nécessaire.Idéalement, un groupe appelé
docker
est créé lors de l'installation de Docker. Cependant, si ce groupe n'existe pas au démarrage du démon, le fichier socket appartient à root.Dans certains cas, ce groupe avait un nom différent, comme
dockerroot
sur Fedora . Vérifiezgrep docker /etc/group
s'il existe un tel groupe sur votre système. Si vous utilisez déjà ce groupe (votre utilisateur y est), vous devrez configurer Docker pour l'utiliser:Dans
/etc/sysconfig/docker
, ajoutez-G dockerroot
(remarque: c'est une solution de contournement, pas la meilleure solution):Après avoir redémarré le démon, votre utilisateur pourra accéder au socket:
Sinon, la manière officielle serait d'utiliser le groupe appelé
docker
. S'il existe, Docker l'utilisera automatiquement, c'est-à-dire qu'il définira le groupe du socket sur ce groupe. S'il n'existe pas, il vous suffit de le créer et de redémarrer le démon:Le fichier socket appartiendra à ce groupe:
Votre utilisateur doit être dans le
docker
groupe pour pouvoir accéder au socket:Vous devrez peut-être vous déconnecter et vous reconnecter (ou
su - (user)
), exécutezid
pour voir si vous êtes dans le groupe.Vous pouvez ensuite utiliser Docker sans sudo / root:
Enfin, un mot d'avertissement. Seuls les utilisateurs de confiance doivent être autorisés à contrôler votre démon Docker . Voir https://docs.docker.com/engine/security/security/ .
(Mais bien sûr, il en va de même pour sudo - seuls les utilisateurs de confiance doivent faire partie du
wheel
groupe.)la source
puis vous déconnecter puis vous reconnecter
la source
Après avoir fait quelques recherches pour résoudre ce problème sur mon système Linux, j'ai pensé que j'écrirais cette réponse. Voici ce que j'ai fait pour résoudre le problème.
Sur Fedora 22
Installation de Docker:
Après avoir installé Docker:
Un utilisateur doit être ajouté au groupe Docker.
Le démon docker doit être démarré
Vous pouvez configurer le démon pour qu'il démarre au démarrage
Vous pouvez vérifier que le service Docker est en cours d'exécution
Et une dernière vérification finale
la source
pacman
, en utilisantsystemctl
au lieu deservice
+chkconfig
).Si vous utilisez Fedora 23 ou Redhat, modifiez
/etc/sysconfig/docker
et modifiez les éléments suivantsRedémarrez docker.
Assurez-vous d'ajouter ce groupe au système et de vous ajouter au groupe.
la source
Cette commande fonctionne pour moi
J'ai trouvé la solution sur cette page si vous avez besoin de plus de documentation. Pourquoi nous ne laissons pas les utilisateurs non root exécuter Docker dans CentOS, Fedora ou RHEL
la source
Si vous avez démarré votre moteur docker avec: sudo service docker start
vous ne pouvez pas vous connecter avec un utilisateur normal même si vous vous êtes ajouté au groupe 'docker'.
Vous pouvez simplement l'arrêter avec: sudo service docker stop
et le démarrer en tant qu'utilisateur normal: démarrage du service docker
la source
docker group
jusqu'à maintenant.sudo service start
travaillé pour moi. Cependant, observera s'il y a quelque chose de nouveau.J'ai également eu le même problème. Le problème était dans les sockets allouées à docker-daemon et docker-client.
Tout d'abord, l'autorisation n'a pas été définie pour le client docker sur docker.sock Vous pouvez le définir à l'aide
sudo usermod -aG docker $USER
Vérifiez ensuite votre fichier bash où le docker-client s'exécute. Pour moi, il a été défini sur 0.0.0.0:2375, alors que le démon docker fonctionnait sur un socket Unix. (Il a été défini dans le fichier de configuration de dockerd).
Il suffit de commenter la ligne incriminée et cela fonctionnera bien.
Mais si vous voulez le faire fonctionner sur le port TCP au lieu du socket Unix, changez le fichier de configuration de dockerd, définissez-le sur 0.0.0.0.2375, et gardez la ligne en bash telle qu'elle est si elle est présente ou définissez-la sur 0.0. 0,0: 2375.
la source
Ce sont les étapes que j'ai suivies pour corriger ce qui suit
Ajoutez-vous au groupe docker
usermod -aG docker $USER
Correction des autorisations sur docker socker et command.
sudo chgrp docker /usr/bin/docker
sudo chgrp docker /var/run/docker.sock
$ ll $(which docker) -rwxr-xr-x 1 root docker 18991768 08.07.2017 22:57 /usr/bin/docker*
$ ll /var/run/docker.sock srw-rw---- 1 root docker 0 23.07.2017 10:21 /var/run/docker.sock
Ajouter des variables à la configuration de l'environnement pour la commande docker
export DOCKER_HOST=unix:///var/run/docker.sock
Rest Docker
sudo systemctl restart docker
la source