Questions souvent posées sur docker
Je met dans cette page un ensemble des questions les plus souvent posées en TP et un moyen de résoudre ces problèmes.
Erreur ''ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running''
Suite à une commande docker …
ou docker-compose
vous obtenez cette erreur.
Explication
Le système dès le départ est pensé pour fonctionner en réseau. Ce que vous faites, comme toutes les commande “dockers …” utilise forcement un client qui essaye de contacter un serveur docker pour lui donner l'ordre de faire les choses.
S'il n'y a aucune configuration particulière, ce client docker contacte une socket locale de la machine localunixsocket
qui est censée se trouver sur la même machine et qui a été crée au lancement du deamon docker. Ici, il n'y arrive pas et l'erreur signifie : “Je n'arrive pas à contacter le serveur local, est-il lancé ?” Elle est souvent suivie de If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
Vous pouvez avoir 2 cas, soit le serveur local est sur la machine où vous tapez les commandes, soit il est distant (par exemple vous utilisez docker-machine qui crée des machines capable de gérer docker sur des plateformes distantes).
Le serveur docker est en local :
Ce qui peut arriver
- Vous tapez simplement la commande sur la mauvaise machine (et oui cela arrive!) ⇒ vérifiez cela.
- Vous n'avez pas les droits
- êtes-vous administrateur de la machine ? Essayez en étant administrateur
sudo docker …
- vous ne pouvez pas être administrateur mais votre utilisateur est dans le groupe
docker
c'est à dire ceux qui on le droit de faire cela ⇒ vérifiez le. La commandegroups
doit afficher le groupe docker.
- Le serveur docker n'a pas démarré :
- vérifiez avec
systemctl status docker
- relancez le avec
systemctl restart docker
- éventuellement rendez le lancement automatique avec
systemctl enable docker
Le serveur n'est pas sur la machine
Dans votre configuration, vous travailler à distance :
- Dans ce cas, la commande dois savoir quelle serveur utiliser et comment vérifier son identité. Vérifiez que les variables d'environnement sont correctes (exemple de la docummentation de docker machine) :
DOCKER_HOST=tcp://192.168.99.101:2376 DOCKER_CERT_PATH=/Users/nathanleclaire/.docker/machines/.client DOCKER_TLS_VERIFY=1 DOCKER_MACHINE_NAME=dev
- Si vous utilisez justement docker-machine, il faut sans doute mettre en place l'environnement via la commande
docker-machine env NOMMACHINE
(voir la documentation ici)