Ich habe Docker-Machine 0.1.0 und Docker-Compose 1.1.0 unter Mac OS 10.8.5 installiert.
Docker-Maschine läuft normal und kann über Docker-Maschine ssh verbinden.
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
dev * virtualbox Running tcp://192.168.99.100:2376
Es kann jedoch keine Verbindung von Docker-Compose hergestellt werden.
$ docker-compose up
Konnte keine Verbindung zum Docker-Daemon unter http + unix: //var/run/docker.sock herstellen - läuft er?
Wenn es sich an einem nicht standardmäßigen Speicherort befindet, geben Sie die URL mit der Umgebungsvariablen DOCKER_HOST an.
Meine Dockerfile und docker-compose.yml ist hier.
Dockerfile
FROM centos:centos7
DOCKER_HOST tcp://192.168.99.100:2376
docker-compose.yml
web:
build: .
Warum kann keine Verbindung hergestellt werden? Irgendwelche Ideen?
docker
docker-compose
DIGITALSQUAD
quelle
quelle
docker-machine
als root? Ich bin gerade mit dem gleichen Problem unter Ubuntu hierher gekommen und es waren die Berechtigungen für den Socket -sudo
habe den Trick gemacht.sudo service docker restart
odersudo service docker start
ich habe es damit gelöst.Antworten:
Der Docker-Computer wird ausgeführt. Sie müssen jedoch eine Umgebung exportieren, um eine Verbindung zum Docker-Computer herzustellen. Standardmäßig versucht der
docker
CLI-Client, mit dem Dämon zu kommunizierenhttp+unix://var/run/docker.sock
(wie in der Fehlermeldung gezeigt).Exportieren Sie die richtigen Umgebungsvariablen mit
eval $(docker-machine env dev)
und versuchen Sie es erneut. Sie können auch einfach ausführendocker-machine env dev
, um die zu exportierenden Umgebungsvariablen anzuzeigen. Beachten Sie, dass einer von ihnen istDOCKER_HOST
, genau wie die Fehlermeldung andeutet, dass Sie möglicherweise festlegen müssen.quelle
eval "$(docker-machine env default)"
) in Ihre Bin / Postaktivierung einfügen, um sicherzustellen, dass er immer auf dem neuesten Stand ist.$ eval $(docker-machine env dev) Command 'docker-machine' not found, but can be installed with: sudo snap install docker
Einfache Lösung für mich:
sudo docker-compose up
UPDATE 2016-3-14: Irgendwann im Docker-Installationsprozess (oder Docker-Compose?) Gibt es einen Vorschlag und ein Beispiel, um Ihren Benutzernamen zur Gruppe "Docker" hinzuzufügen. Auf diese Weise können Sie vermeiden, dass "sudo" vor allen Docker-Befehlen benötigt wird.
Schauen Sie sich die Ausgabe der Installationsbefehle (sowohl Docker als auch die 2. Installation für Docker-Compose) genau an und Sie werden den notwendigen Schritt finden. Es ist auch hier dokumentiert: https://subosito.com/posts/docker-tips/
UPDATE 2017-3-9
Die Installationsanweisungen für Docker wurden hier aktualisiert.
Schritte nach der Installation für Linux
Dieser Abschnitt enthält optionale Verfahren zum Konfigurieren von Linux-Hosts für eine bessere Zusammenarbeit mit Docker.
Verwalten Sie Docker als Nicht-Root-Benutzer
Der Docker-Daemon wird anstelle eines TCP-Ports an einen Unix-Socket gebunden. Standardmäßig gehört dieser Unix-Socket dem Benutzer root, und andere Benutzer können nur mit sudo darauf zugreifen. Der Docker-Daemon wird immer als Root-Benutzer ausgeführt.
Wenn Sie sudo nicht verwenden möchten, wenn Sie den Docker-Befehl verwenden, erstellen Sie eine Unix-Gruppe namens Docker und fügen Sie Benutzer hinzu. Wenn der Docker-Daemon gestartet wird, wird der Besitz des Unix-Sockets von der Docker-Gruppe gelesen / beschrieben.
So erstellen Sie die Docker-Gruppe und fügen Ihren Benutzer hinzu:
Dieser Befehl lädt ein Testbild herunter und führt es in einem Container aus. Wenn der Container ausgeführt wird, wird eine Informationsnachricht gedruckt und beendet.
quelle
newgrp docker
sudo docker-compose up
". Wenn ich das versuche, bekomme ich:sudo: docker-compose: command not found
Wenn Sie Docker mit gestartet haben
sudo
, sollten Sie Docker-Compose mitsudo
Like ausführen :sudo docker-compose up
quelle
sudo docker-compose build
stattdocker-compose build
.Standardmäßig wird der Docker-Daemon immer als Root-Benutzer ausgeführt. Daher müssen Sie
sudo
Ihren Docker- Befehlen vorangestellt werden .Wenn Sie sudo nicht verwenden möchten, wenn Sie den Docker-Befehl verwenden, erstellen Sie eine Unix-Gruppe namens Docker und fügen Sie Benutzer hinzu. Wenn der Docker-Daemon gestartet wird, wird der Besitz des Unix-Sockets von der Docker-Gruppe gelesen / beschrieben.
So erstellen Sie die Docker-Gruppe und fügen Ihren Benutzer hinzu:
Erstellen Sie die Docker-Gruppe.
$ sudo groupadd docker
Fügen Sie Ihren Benutzer zur Docker-Gruppe hinzu.
$ sudo usermod -aG docker $USER
Melden Sie sich ab und wieder an, damit Ihre Gruppenmitgliedschaft neu bewertet wird.
Stellen Sie sicher, dass Sie Docker-Befehle ohne sudo ausführen können.
$ docker run hello-world
Dieser Befehl lädt ein Testbild herunter und führt es in einem Container aus. Wenn der Container ausgeführt wird, wird eine Informationsnachricht gedruckt und beendet.
Die oben beschriebenen Schritte stammen aus der offiziellen Docker-Dokumentation .
quelle
docker-compose
als Eigentümer von ausgeführt/usr/local/bin/docker-compose
und dann den Dienst neu gestartet habegroup
Die Mitgliedschaft kann mit aktualisiert werdensu - $USER
, um das Abmelden und Anmelden zu sparenWenn Sie einen Fehler erhalten :
Die Lösung wäre:
Stellen Sie zunächst sicher, dass der Docker-Dienst auf Ihrem Remote- / lokalen Computer wie erwartet ausgeführt wird:
sudo service docker status
Wenn nicht - ausführen
sudo service docker start
odersudo systemctl start docker
(abhängig von einigen Linux-Versionen, siehe Docker- Anweisungen zum Starten ).Zweitens starten Sie Docker als Sudo
sudo docker-compose up
quelle
sudo systemctl start docker
- um den Docker-Dienst zu starten.sudo docker-compose up
nachdem.Ich habe Fedora 26 und versuche, das gleiche Problem zu lösen, das ich schließlich auf der Fedora-Entwicklerseite in Docker Compose und dann auf der Fedora-Entwicklerseite in Docker Compose eingegeben habe , was mir geholfen hat.
Wahrscheinlich hat der Docker-Service von der Community in Betracht gezogen, mit dem System zu beginnen und die ganze Zeit im Hintergrund zu laufen, aber für mich war das nicht so offensichtlich, und das ist der Grund, warum ich mir vorstellen kann, warum es keine populäre Antwort wie diese gibt.
Auf der Fedora-Entwicklerseite finden Sie Anweisungen, wie Docker mit dem System gestartet werden kann:
sudo systemctl enable docker
quelle
systemctl
durch,launchctl
wenn Sie auf einem Mac laufen.Wenn Sie unter Linux arbeiten, haben Sie möglicherweise keine
docker-machine
Installation durchgeführt, da diese standardmäßig nur auf Windows- und Mac-Computern installiert ist.In diesem Fall müssen Sie https://docs.docker.com/machine/install-machine/ aufrufen , um Anweisungen zur Installation auf Ihrer Linux-Version zu erhalten.
docker-compose up
Versuchen Sie nach der Installation erneut, die Ausführung durchzuführen, bevor Sie die oben aufgeführten Schritte ausführen .Hoffe das hilft jemandem. Dies funktionierte für meine Devilbox-Installation in Fedora 25.
quelle
Neben dem Hinzufügen von Benutzern zur Docker-Gruppe
sudo
können Sie auch einen Alias fürdocker
Befehle wie den folgenden erstellen , um wiederholte Wiederholungen zu vermeiden :quelle
Wenn Sie eine Docker-Maschine verwenden, müssen Sie die Umgebung mit der Variablen env aktivieren . Wenn Sie keine Docker-Maschine verwenden, führen Sie Ihre Befehle mit sudo aus
quelle
Hat jemand das Protokoll überprüft?
In meinem Fall war die Fehlermeldung in
/var/log/upstart/docker.log
:Erwähnenswert ist, dass ich VPN eingeschaltet hatte, also:
$ sudo service openvpn stop $ sudo service docker restart $ docker-compose up|start $ sudo service openvpn start
war die Lösung.quelle
Antwort von @srfrnk funktioniert für mich.
In meiner Situation hatte ich die nächste Datei docker-compose.yml:
./docker-runtime
Eigentümer und Gruppe - ist,root
wenn der andere Dateieigentümer - mein Benutzer. Als ich versuchte zu bauennginx
Ich habe
./docker-runtime
zu.dockerignore
und es ist mein Problem gelöst.quelle
während des Laufens
docker-compose pull
- ich wurde unter Fehlerläuft es
Lösung -
Problem gelöst
quelle
Ich habe die gleichen Symptome gehabt.
Nur diff, dass es nur während der
docker-compose build
docker ps
Arbeit passiert ist . Passiert sowohl mit der Version2.x
als auch3.x
.docker
Dienst neu gestartet , dann die Maschine ... Auch neu installiertdocker
+docker-compose
.Versuchte alles, aber nichts half.
Schließlich habe ich versucht, die Docker-Datei "manuell" mit zu erstellen
docker build
.Anscheinend hatte ich ein Berechtigungsproblem für eine Datei / einen Ordner im
Docker
Kontext. Beim Versuch, den Build zu starten, wurde versucht, den Kontext zu lesen, und es wurde eine ordnungsgemäße Fehlermeldung angezeigt. Jedoch Nachricht dieser Fehler nicht ausbreiten ,docker-compose
die nur zeigtCouldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?
Nachdem festgestellt wurde, dass die Lösung einfach die Datei / den Ordner zur
.dockerignore
Datei hinzufügte, da sie für den Build nicht benötigt wurde. Eine andere Lösung könnte gewesen seinchown
oderchmod
es.Auf jeden Fall könnte dies jemandem helfen, auf dasselbe Problem zu stoßen, das wirklich nichts damit zu tun hat,
docker
und die irreführende Fehlermeldung wird angezeigt.quelle
chown
/chmod
Reparierte es. Schreckliche Fehlermeldung, aber sie arbeiten daran. Siehe github.com/docker/compose/issues/5318$ sudo docker-compose up
Ich habe die Schritte wie in der obigen Antwort befolgt, um $ USER zum Gruppendock hinzuzufügen. Ich wollte kein neues Gruppen-Docker hinzufügen, da in meiner Docker-Installation automatisch eine Gruppe namens Docker erstellt wurde.
Docker CE ist installiert und läuft. Die Docker-Gruppe wird erstellt, aber es werden keine Benutzer hinzugefügt. Sie müssen sudo verwenden, um Docker-Befehle auszuführen. Fahren Sie mit der Nachinstallation von Linux fort, damit nicht privilegierte Benutzer Docker-Befehle ausführen und andere optionale Konfigurationsschritte ausführen können.
Aber Docker-Compose Up hat auch nicht funktioniert. Es gab den gleichen vorherigen Fehler. In meinem Fall (Ubuntu 18.10) hat sudo docker-compose up das Problem behoben.
ps: @Tiw danke für den Rat.
quelle
Ich weiß, dass es albern ist, aber in meinem Fall habe ich es nur versucht
sudo
und es hat wie ein Zauber funktioniert.Versuchen Sie in Ihrem Fall einfach:
$ sudo docker-compose up
quelle
Versuche dies:
sudo ln -s / usr / local / bin / docker-compose / usr / bin / docker-compose
quelle
Ich habe das Problem mithilfe der folgenden Schritte behoben
Jetzt funktioniert Docker-Compose Up
quelle
Für mich habe ich mit dem Upgrade von Docker begonnen und auf halbem Weg abgesagt. Ich habe nicht bemerkt, dass Docker nicht ausgeführt wird (falls dies der Fall ist, befindet sich in der oberen Navigationsleiste meines Macbooks ein Symbol für den verbleibenden Akku, die verbleibende Zeit usw.). Nachdem ich es gestartet und das Upgrade abgeschlossen hatte,
docker-compose up
funktionierte es wieder!quelle
Mein Setup hat zwei Fälle für diesen Fehler:
__pycache__
Dateien, die vom Root-Benutzer erstellt wurden, nachdem ich Integrationstests im Container ausgeführt habe, sind für Docker nicht zugänglich (zeigt Ihnen das ursprüngliche Problem an) und Docker-Compose (zeigt Ihnen mehrdeutig den Docker-Host an).microk8s
blockierte meinen Port, bis ich ihn stoppte.quelle
Versuchen Sie es
dockerd
oder führen Siesudo dockerd
es zuerst aus, um den Daemon zu starten. Wenn Sie beginnen ,dockerd
mitsudo
Ihnen kann ausgeführt werden solldocker-compose up
mitsudo
auch. sonst ist es gutArbeitslösung von https://github.com/docker/compose/issues/4181
quelle
Das Abmelden und erneutes Abmelden hat mir geholfen. In meinem Fall war es eine Neuinstallation, ich habe einen neuen Benutzer erstellt, eine neue Gruppe und dann den Benutzer zur Docker-Gruppe hinzugefügt.
Ausfahrt Ausfahrt
dann ssh wieder in den server
quelle
Folgendes hat bei mir funktioniert, ich bin mir nicht sicher, welcher Teil den Trick gemacht hat:
quelle