J'essaie d'en savoir plus sur Docker , mais je reçois toujours des messages d'erreur cryptiques (pour moi).
L'exemple le plus simple est peut-être d'essayer d'imprimer la version de Docker que j'ai installée:
$ sudo docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
FATA[0000] Get http:///var/run/docker.sock/v1.16/version:
dial unix /var/run/docker.sock: no such file or directory.
Are you trying to connect to a TLS-enabled daemon without TLS?
Je viens de parcourir le guide de l' utilisateur et de suivre exactement chaque étape, donc je suis surpris de recevoir ce message ... Que dois-je faire maintenant?
Je viens de remarquer que si je n'utilise pas, sudo
je ne reçois pas l'erreur:
$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8
Bien sûr, ce n'est pas une solution car je devrai peut-être utiliser sudo
quelque part plus tard ...
Je viens de trouver une autre page disant " Si vous utilisez OS X, vous ne devriez pas l'utiliser sudo
." Je ne sais pas s'ils signifient uniquement pour cet exemple, ou en général.
boot2docker
) bien que OS X ne soit pas explicitement mentionné dans la question ou les balises. Si quelqu'un est intéressé par une réponse générique, veuillez consulter ma réponse.Réponses:
Pour moi, l'exécution a
$(boot2docker shellinit 2> /dev/null)
résolu le problème.Cela exécute la sortie de la
boot2docker shellinit
commande (les troisset -x ...
lignes) dans votre session de terminal actuelle, ce qui permet à ladocker
commande de savoir où trouver la machine virtuelle boot2docker.L'ajout
$(boot2docker shellinit 2> /dev/null)
au bas de votre~/.bash_profile
fichier vous assurera que ladocker
commande est configurée, chaque fois que vous ouvrez votre terminal.Pour les personnes utilisant la coquille de poisson:
boot2docker shellinit ^ /dev/null | source
.Notez que
2> /dev/null
(et l'équivalent poisson^ /dev/null
) sont facultatifs. Comme l'a suggéré @ pablo-fernandez, cela masque lesWriting ..
lignes.la source
boot2docker start
avant d'exécuter le shell init.J'obtenais la même erreur sur MacOS avec sudo et sans lui.
Je l'ai résolu avec:
PS: Merci à Alan. J'ai découvert que cette approche est recommandée dans leur documentation officielle .
PS2: Parfois, il
boot2docker init
peut être nécessaire de lancer deux commandes (merci Aaron).la source
Dans mon cas (Linux Mint 17), j'ai fait diverses choses, et je ne sais pas lesquelles sont totalement nécessaires.
J'ai inclus des packages Ubuntu manquants:
Un utilisateur a été ajouté au groupe
docker
:Démon démarré (openSUSE en a juste besoin)
Merci \ Attribution
Merci Usman Ismail , parce que c'était peut-être juste cette dernière chose ...
Merci également à github @ MichaelJCole pour la solution qui a fonctionné pour moi, car je n'ai pas vérifié le démon lorsque j'ai lu le commentaire d'Usman.
Commentaire GitHub :
Grâce à fredjean.net pour avoir remarqué les paquets manquants et oublier les instructions d'installation d'Ubuntu par défaut et google sur d'autres façons
Merci au commentaire de brettof86 sur openSUSE
la source
sudo adduser $USER docker
. L'astuce pour le faire prendre effet sur le shell actuel a étécurgroup=$(id -gn) && newgrp docker && newgrp $curgroup
adaptée de superuser.com/questions/272061/…Le problème sous-jacent est simple - manque d'autorisation pour
/var/run/docker.sock
unix socket de domaine.À partir du chapitre sur l' option de socket Daemon de la référence de la ligne de commande Docker pour Docker 1.6.0:
Les étapes nécessaires pour accorder des droits aux utilisateurs sont bien décrites dans les instructions d'installation de Docker pour Fedora :
Déconnectez-vous et reconnectez-vous pour que les modifications ci-dessus prennent effet. Veuillez noter que les packages Docker de certaines distributions Linux (Ubuntu) sont déjà placés
/var/run/docker.sock
dans ledocker
groupe, rendant inutiles les deux premières étapes ci-dessus.Dans le cas d'OS X et
boot2docker
la situation est différente; le démon Docker s'exécute à l'intérieur d'une machine virtuelle, de sorte que laDOCKER_HOST
variable d'environnement doit être définie sur cette machine virtuelle afin que le client Docker puisse trouver le démon Docker. Cela se fait en exécutant$(boot2docker shellinit)
dans le shell.la source
boot2docker shellinit
et d'autres commandes est que cette commande n'apporte aucune modification elle-même mais qu'elle génère (imprime) uniquement les commandes que vous devez exécuter vous-même. Vous pouvez exécuter d'boot2docker shellinit
abord, puis copier et exécuter manuellement chaque commande à partir de sa sortie. Il est plus facile d'exécuter toutes les commandes en s'exécutantboot2docker shellinit
dans un sous-processus (avec$()
syntaxe) car de cette façon, chaque ligne de sortie est exécutée automatiquement en tant que commande shell. Voir docs.docker.com/installation/mac/#from-your-command-line où cela est montré en détail.sudo service docker status
. Sur mon Ubuntu 14.04, il ne fonctionnait pas après l'installation, ce qui a provoqué l'erreur.Assurez-vous que le démon Docker est en cours d'exécution:
Cela m'a arrangé!
la source
sudo service docker start
pour moisystemctl enable docker.service
etsystemctl start docker.service
pour les utilisateurs de system.d linux (Arch dans mon cas)sudo service docker restart
pour moi$ docker version
requête de commande est interne à l'exécutable Docker et non au démon / service en cours d'exécution.$ docker images or $ docker ps or $ docker pull centos
sont des commandes qui envoient des requêtes au démon / service docker en cours d'exécution.docker
ou que vous avez utilisésudo
avant la commande, par exemple$ sudo docker images
, ne nécessite pas de connectivité TLS.Visitez la page de documentation Docker Protéger le socket du démon Docker .
Faites défiler un peu vers le haut et recherchez la
warning section
clarté.la source
sudo usermod -a -G docker {username}
Vous devrez faire:
Les paramètres suivants ont résolu le problème:
la source
eval "$(boot2docker shellinit)"
Il est possible que vous n'ayez pas encore l'autorisation sur le fichier. Cela m'est arrivé après que je me suis ajouté au
docker
groupe en utilisantmais pas encore de déconnexion.
Pour résoudre ce problème, vous pouvez soit vous reconnecter, soit utiliser
sg docker "docker <subcommand> ..."
avant de vous déconnecter.Si vous êtes en groupe
docker
dans/etc/group
, vous devriez être en mesure d'exécuter sans mot de passe de frappe.https://dingyichen.wordpress.com/2015/02/05/docker-dial-unix-varrundocker-sock-no-such-file-or-directory-are-you-trying-to-connect-to-a- tls-enabled-daemon-without-tls /
la source
Sur Ubuntu après l'installation de lxc-docker, vous devez ajouter votre utilisateur au groupe d'utilisateurs docker :
Cela est dû aux autorisations du fichier socket:
NE PAS EXÉCUTER le mode utilisateur SANS "-a" comme suggéré dans l'un des autres commentaires ou il effacera vos paramètres de groupes supplémentaires et laissera simplement le groupe "docker"
C'est ce qui se passera:
la source
TLDR : Cela a permis à mon groupe de rencontre Python de résoudre ce problème lorsque je dirigeais une clinique sur l'installation de docker et que la plupart des utilisateurs étaient sur OS X:
exécutez les
export
commandes que la sortie vous donne, puisdevrait vous dire que cela fonctionne.
Le contexte (ce qui nous a amenés au problème)
J'ai dirigé une clinique sur l'installation de Docker et la plupart des participants avaient OS X, et nous avons rencontré ce problème et je l'ai surmonté sur plusieurs machines. Voici les étapes que nous avons suivies:
Tout d'abord, nous avons installé homebrew (oui, certains participants ne l'avaient pas):
Ensuite, nous avons eu cask, que nous avons utilisé pour installer virtualbox, puis utilisé brew pour installer docker et boot2docker (tous requis pour OS X) N'utilisez pas sudo pour brew. :
La solution
C'est à ce moment-là que nous avons rencontré le problème que le demandeur a rencontré. Ce qui suit l'a corrigé. Je comprends que
init
c'était une affaire unique, mais vous devrez probablement exécuterup
chaque fois que vous démarrez Docker:Puis quand
up
a été exécuté, il donne plusieursexport
commandes. Copiez-collez et exécutez-les.Enfin
docker info
devrait vous dire qu'il est correctement installé.Vers la démo
Le reste des commandes devrait le faire une démonstration. (sur Ubuntu linux, j'avais besoin de sudo.)
Ensuite, vous devriez être sur un shell racine dans le conteneur:
Retour à votre bash utilisateur natif:
Recherchez l'identifiant hexadécimal d'environ 12 chiffres (0-9 ou af) sous "ID du conteneur", par exemple
456789abcdef
. Vous pouvez ensuite valider votre modification et lui donner un nom descriptif, commedescriptivename
:la source
Tout ce dont vous avez besoin pour exécuter Docker sur Linux Ubuntu / Mint:
Facultativement, vous devrez peut-être installer deux dépendances supplémentaires si ce qui précède ne fonctionne pas:
la source
sudo service docker start
j'ai donc résolu le problème sur mon Ubuntu 14.04.J'ai essayé les solutions ici et boot2docker n'a pas fonctionné.
Ma solution: désinstaller boot2docker sur le Mac, installer une machine virtuelle Centos 7 dans VirtualBox et travailler avec Docker à l'intérieur de cette machine virtuelle.
la source
Pour moi, les étapes suivantes ont fonctionné:
docker run hello-world
échoue avec cette erreur bloquée comme dans la question, mais la course asudo docker run hello-world
fonctionné.docker
groupesudo adduser user docker
,. Ensuite, vous devez redémarrer votre machine ou utilisersu - user
(vérifiez à l'aide de lagroups
commande si vous êtes dans ledocker
groupe).Après cela, a
hello-world
commencé à travailler.Ma réponse est basée sur Comment puis-je utiliser Docker sans sudo? ce qui explique ce qui ne va pas.
la source
Pour ce que ça vaut, j'ai essayé toutes les solutions dans cette question et dans cette question connexe et aucune n'a résolu mon problème jusqu'à ce que j'ai désinstallé et réinstallé VirtualBox . Ce processus a mis à niveau la VirtualBox de la version 4.2.16 à la 4.3.22 (ma précédente était restée inutilisée sur le système pendant quelques mois).
Puis
boot2docker
etdocker
travaillé sans autres ajustements.la source
J'ai eu le même problème. Un simple a
service docker restart
résolu le problème.la source
Le démon Docker se lie à un socket Unix au lieu d'un port TCP. Par défaut, le socket Unix appartient à l'utilisateur root et les autres utilisateurs ne peuvent y accéder qu'en utilisant sudo. Le démon Docker s'exécute toujours en tant qu'utilisateur root.
Déconnectez-vous et reconnectez-vous pour que votre appartenance à un groupe soit réévaluée.
Source: Gérer Docker en tant qu'utilisateur non root
la source
J'ai eu le même problème et j'ai essayé diverses choses pour résoudre ce problème, en modifiant le fichier .bash_profile, en me connectant et en me déconnectant, sans aucune chance. En fin de compte, le redémarrage de ma machine l'a corrigé.
la source
Assurez-vous qu'il y a
dans votre
fichier.
la source
J'ai rencontré le même problème lorsque je créais des images Docker à partir de Jenkins. Ajoutez simplement l'utilisateur au
docker
groupe, puis redémarrez les services Docker et dans mon cas, j'ai dû redémarrer les services Jenkins.Ce fut l'erreur que j'ai eu:
la source
Une autre raison possible est que la visualisation de votre CPU BIOS n'est pas activée. Allez et activez-le d'abord!
la source