GOOGLE ADS

Montag, 25. April 2022

Es kann keine Verbindung zu Docker von docker-compose hergestellt werden

Ich habe docker-machine 0.1.0 und docker-compose 1.1.0 unter Mac OS 10.8.5 installiert. Docker-Machine läuft normal und kann sich per Docker-Machine ssh verbinden.

$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
dev * virtualbox Running tcp://192.168.99.100:2376

Kann jedoch keine Verbindung von docker-compose herstellen.

$ docker-compose up

Es konnte keine Verbindung zum Docker-Daemon unter http+unix://var/run/docker.sock hergestellt werden - läuft es?


Wenn es sich um einen nicht standardmäßigen Speicherort handelt, geben Sie die URL mit der Umgebungsvariablen DOCKER_HOST an.

Mein 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?


Lösung des Problems

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 „Docker"-Gruppe hinzuzufügen. Dadurch können Sie vermeiden, "sudo" vor allen Docker-Befehlen zu benötigen, wie folgt:

~ > docker run -it ubuntu /bin/bash
root@665d1ea76b8d:/# date
Mon Mar 14 23:43:36 UTC 2016
root@665d1ea76b8d:/# exit
exit
~ >

Schauen Sie sich die Ausgabe der Installationsbefehle (sowohl Docker als auch die zweite Installation für Docker-Compose) genau an, und Sie werden den erforderlichen Schritt finden. Es ist auch hier dokumentiert: https://subosito.com/posts/docker-tips/

Schweiß? Unterlassen Sie!


Sind Sie es leid, jedes Mal sudo docker einzugeben, wenn Sie einen Befehl erteilen? Ja, es gibt einen Weg, damit umzugehen. Obwohl Docker natürlich einen Root-Benutzer erfordert, können wir eine root-äquivalente Gruppe für Docker-Operationen angeben.


Sie können eine Gruppe namens Docker erstellen und dann den gewünschten Benutzer zu dieser Gruppe hinzufügen. Nach dem Neustart des Docker-Dienstes muss der Benutzer nicht jedes Mal sudo eingeben, wenn Docker-Vorgänge ausgeführt werden. Wie sieht es mit Shell-Befehlen aus? als root, los gehts:

> sudo groupadd docker
> sudo gpasswd -a username docker
> sudo service docker restart

Erledigt!

UPDATE 2017-3-9
Docker-Installationsanweisungen 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 bindet an einen Unix-Socket statt an einen TCP-Port. 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 ihr Benutzer hinzu. Wenn der Docker-Daemon startet, macht er den Besitz des Unix-Sockets für die Docker-Gruppe lesbar/schreibbar.

So erstellen Sie die Docker-Gruppe und fügen Ihren Benutzer hinzu:

# 1. Create the docker group.
$ sudo groupadd docker
# 2. Add your user to the docker group.
$ sudo usermod -aG docker $USER
# 3. Log out and log back in so that your group membership is re-evaluated.
# 4. Verify that you can run docker commands without sudo.
$ docker run hello-world

Dieser Befehl lädt ein Testimage herunter und führt es in einem Container aus. Wenn der Container ausgeführt wird, gibt er eine Informationsmeldung aus und wird beendet.

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...