Nachdem ich meine Docker-Version auf 0.8.0
aktualisiert habe, wird bei der Eingabe von Sudo docker version
eine Fehlermeldung angezeigt:
Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
2014/02/19 12:54:16 Can't connect to docker daemon. Is 'docker -d' running on this host?
Ich habe die Anweisungen befolgt und den Befehl Sudo docker -d
eingegeben, und ich habe folgendes bekommen:
[/var/lib/docker|2462000b] +job initserver()
[/var/lib/docker|2462000b.initserver()] Creating server
open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory[/var/lib/docker|2462000b] -job initserver() = ERR (1)
2014/02/19 12:55:57 initserver: open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory
Wie löse ich das Problem?
Die Nachinstallationsschritte für Linux dokumentieren die folgenden Schritte:
Sudo Groupadd Docker
Sudo usermod -aG Docker $ (whoami)
Start des Sudo Service Docker
Wie Dayel Ostraco sagt, ist notwendig, Umgebungsvariablen hinzuzufügen:
docker-machine start # Start virtual machine for docker
docker-machine env # It's helps to get environment variables
eval "$(docker-machine env default)" # Set environment variables
Der Befehl docker-machine start
gibt die Kommentare aus, die den Prozess leiten sollen.
Wenn Sie Docker unter OS X ausführen, hat das Ausführen des folgenden eval für mich funktioniert.
eval "$(docker-machine env default)"
Wenn Sie diese Eval-Anweisung nicht für jede Terminalsitzung ausführen möchten, können Sie dies zu Ihrem bash_profile
hinzufügen:
#Docker
eval "$(docker-machine env default)"
Stellen Sie sicher, dass Sie die Terminalsitzung neu starten oder die Quelle auf bash_profile
ausführen, damit die Änderungen wirksam werden.
Um den Docker-Daemon unter Linux (von CLI ) auszuführen, führen Sie Folgendes aus:
$ Sudo service docker start # Ubuntu/Debian
Hinweis: Überspringen Sie das $
-Zeichen beim Kopieren und Einfügen.
Führen Sie unter RedHat/CentOS Folgendes aus: Sudo systemctl start docker
.
Um das "Basis" -Dateisystem zu initialisieren, führen Sie Folgendes aus:
$ Sudo service docker stop
$ Sudo rm -rf /var/lib/docker
$ Sudo service docker start
oder manuell wie:
$ Sudo docker -d --storage-opt dm.basesize=20G
docker-machine
unter LinuxSo installieren Sie Maschinen-Binärdateien unter Linux:
örtlich:
install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-AMD64) $HOME/bin/docker-machine
global:
Sudo bash -c 'install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-AMD64) /usr/local/bin/docker-machine'
Unter macOS ist docker
binary nur ein Client und Sie können es nicht zum Ausführen des Docker-Daemons verwenden, da der Docker-Daemon Linux-spezifische Kernel-Funktionen verwendet. Daher können Sie Docker nicht nativ unter OS X ausführen. Daher müssen Sie docker-machine
in der richtigen Reihenfolge installieren zum Erstellen von VM und Anhängen daran.
docker-machine
unter macOSWenn Sie noch nicht über den Befehl docker-machine
verfügen, installieren Sie ihn mit einer der folgenden Methoden:
brew install docker-machine docker
.manuell von GitHub :
install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-AMD64) /usr/local/bin/docker-machine
Siehe: Erste Schritte mit Docker für Mac .
docker-machine
unter macOSUm Docker Machine über Homebrew zu starten, führen Sie Folgendes aus:
brew services start docker-machine
So erstellen Sie eine default
-Maschine (wenn Sie keine haben, siehe: docker-machine ls
):
docker-machine create --driver virtualbox default
Dann richten Sie die Umgebung für den Docker-Client ein:
eval "$(docker-machine env default)"
Dann überprüfen Sie die Liste, indem Sie die Container auflisten:
docker ps
Siehe: Erste Schritte mit Docker Machine und einem lokalen VM .
Alternativ zur obigen Lösung können Sie eine Docker-App installieren, indem Sie:
brew cask install docker
Überprüfen Sie diesen Beitrag für weitere Details . Siehe auch: Verbindung zum Docker-Daemon unter macOS nicht möglich
Nach einer detaillierten Untersuchung scheint dieses Problem bei jedem Neustart von Mac OS X (oder der Neustart der Docker-VM) aufgetreten zu sein. Dies verhindert, dass der Docker-Client eine Verbindung zum Docker-Dämon herstellt.
Um das Problem zu lösen, können Sie entweder:
A) Installieren Sie Docker Toolbox mit dem offiziellen Installationsprogramm ( https://www.docker.com/products/docker-toolbox ) oder einfach neu
B) Führen Sie die folgenden Befehle der Reihe nach aus:
# First make sure that the virtual machine is running
docker-machine start default
# Regenerate TLS connection certs, requires confirmation
docker-machine regenerate-certs default
# Finally, set env
eval "$(docker-machine env default)"
C) Wie bei (B) können Sie auch die folgende Zeile kopieren und einfügen, um alle drei Befehle auszuführen:
docker-machine start default; docker-machine regenerate-certs default; eval "$(docker-machine env default)"
Falls Sie die folgende Fehlermeldung erhalten:
Error getting SSH command: Something went wrong running an SSH command!
command : cat /etc/os-release
err : exit status 255
output :
führen Sie einfach die drei Befehle erneut aus, und es sollte das zweite Mal funktionieren.
Dies geschieht normalerweise, wenn Sie sich nicht in der Gruppe docker
befinden. Sie können sich der Gruppe docker
hinzufügen mit:
Sudo usermod -aG docker yourusername
oder
Sudo usermod -aG docker $(whoami)
Danach müssen Sie sich abmelden und wieder beim Server anmelden.
Alternativ können Sie jeden Docker-Befehl Sudo
verwenden.
Wenn alle anderen oben genannten Lösungen nicht funktionieren, können Sie den Besitz von /var/run/docker.sock
überprüfen:
ls -l /var/run/docker.sock
Wenn Sie nicht der Eigentümer sind, ändern Sie den Eigentümer mit dem Befehl:
Sudo chown *your-username* /var/run/docker.sock
Dann können Sie die Docker-Befehle problemlos ausführen: D
Um herauszufinden, warum Docker nicht funktioniert, müssen Sie den Dämon manuell ausführen.
$ Sudo service docker stop
$ ps aux | grep docker # do this until you don't see /usr/bin/docker -d
$ /usr/bin/docker -d
Der Docker-Daemon meldet sich bei STDOUT an, so dass er alles ausspuckt.
Hier war mein Problem:
[8bf47e42.initserver()] Creating pidfile
2015/01/11 15:20:33 pid file found, ensure docker is not running or delete /var/run/docker.pid
Dies lag daran, dass die Instanz von einer anderen virtuellen Maschine geklont wurde. Ich musste nur die PID-Datei entfernen und alles funktionierte danach.
Anstatt davon auszugehen, dass dies funktionieren wird, würde ich natürlich empfehlen, den Daemon noch einmal manuell auszuführen und die Protokollausgabe auf andere Fehler zu überprüfen, bevor Sie die Sicherung des Services starten.
Wenn Sie die Nachricht Can't connect to docker daemon. Is 'docker -d' running on this host?
erhalten, können Sie sie mit docker version
überprüfen.
Wenn Sie Informationen wie Docker Client sehen, werden diese ausgeführt. Docker Server ist jedoch nicht , es ist offensichtlich, dass Sie den Docker Server starten müssen.
In CentOS können Sie service
verwenden, um den Docker-Server zu starten oder zu stoppen.
$ Sudo service docker stop
$ Sudo service docker start
Nachdem Sie docker version
eingegeben haben, erhalten Sie die Informationen zu Docker Client und Docker Server . Der Docker-Dämon wurde gestartet.
Ich starte Docker nach der Installation neu:
$ Sudo service docker stop
$ Sudo service docker start
Und es funktioniert.
Führen Sie einen ps aux | grep docker
aus, um zu sehen, ob der Daemon läuft. Wenn nicht, /etc/init.d/docker start
ausführen
Ich bin mit diesem Problem konfrontiert und habe Docker mit diesen Befehlen neu gestartet:
$ Sudo service docker stop
$ Sudo service docker start
Ich habe mein Problem jedoch nicht gelöst, weil ich vergessen habe, meine Docker-Befehle ohne Sudo
auszuführen. Versuchen Sie, für diejenigen, die dieses Problem haben, dies zu überprüfen.
Versuchen
$ Sudo docker info
an Stelle von:
$ docker info
Ich habe ein ähnliches Problem. Ich musste mich abmelden und erneut bei Shell anmelden, da ich Docker gerade installiert habe und der folgende Befehl in meiner Umgebung nicht angezeigt wurde.
export DOCKER_Host=127.0.0.1:4243 >> ~/.bashrc
Ich habe den gleichen Fehler und der Versuch docker-machine regenerate-certs
oder eval..
hat bei mir nicht funktioniert.
Dies unter OS X 10.11.3 (El Capitan) und Docker v1.10.1. Ich konnte es nur beheben, indem ich die Docker-Maschine wieder löschte und neu erstellte. Quelle
Wenn Sie docker-machine ls
ausführen, zeigt es Ihnen eine ähnliche Ausgabe wie die folgende.
DOCKER
Unbekannte
FEHLER
Docker-Version kann nicht abgefragt werden: Kann nicht Stellen Sie eine Verbindung zum Endpunkt der Docker-Engine her
Versuchen Sie, Ihre Docker-Maschine mit zu entfernen;
docker-machine rm -f default
Dabei ist default
der Name Ihrer Docker-Maschine. Dann;
docker-machine create -d virtualbox default
Erzeugt eine neue Docker-Maschine.
Vergewissern Sie sich, dass jetzt alles normal aussieht (kein Fehler oder unbekannter Docker).
docker-machine ls
Vergessen Sie nicht, "$(docker-machine env default)"
auszuführen, bevor Sie fortfahren, oder führen Sie das Docker Quickstart-Terminal aus, das dies für Sie erledigt ...
Fügen Sie den aktuellen Benutzer zur docker
-Gruppe hinzu:
Sudo usermod -aG docker $USER
Dann abmelden und einloggen.
Ich hatte das gleiche Problem - "Kann keine Verbindung zum Docker-Dämon herstellen." (außer ich habe beim Versuch, den Server zu starten, keine "Datei nicht gefunden" -Fehler erhalten.)
'ps' zeigte, dass "/ usr/bin/docker -d" noch läuft
Mir wurde klar, dass es mir nie wirklich gelungen war, den Server selbst zu betreiben. Jeder Versuch hatte sich ergeben
...
2014/03/24 21:57:29 pid file found, ensure docker is not running or delete /var/run/docker.pid
Später erkannte ich, dass die Installation des Dockers den Dämon möglicherweise mit Upstart registriert hatte, wodurch er für mich gestartet wurde. Der Versuch, den Daemon zu beenden, um ihn manuell neu zu starten, schlägt daher fehl (Vorgang nicht zulässig). Also habe ich eine
Sudo kill -9 <PID>
auf dem Daemon-Prozess. Ein anderer Dämon nahm sofort seinen Platz ein und dieser neue DOES lässt jetzt meinen CLI-Client verbinden:
$ Sudo docker info
Containers: 0
Images: 0
Driver: aufs
Root Dir: /var/lib/docker/aufs
Dirs: 0
WARNING: No memory limit support
WARNING: No swap limit support
Ich hatte gerade das gleiche Problem unter Amazon AWS .
Folgendes habe ich versucht:
docker-machine
lokal mit einer bereits vorhandenen AWS-Instanz eindockerd
zu starten.Es wurde auf dem Remote-Computer wie folgt getestet:
service docker start # Also restart, no success
systemctl start docker # Also restart, no success
dockerd # Success
Ich habe /var/lib/docker
entfernt und alles deinstalliert, aber nach der Neuinstallation war kein Erfolg. Leider habe ich keine Protokolle für Fehler gespeichert, aber docker.service
lehnte den Start ab.
Was mein Problem schließlich gelöst hat, war im Wesentlichen:
Sudo usermod -aG docker $(whoami)
Wenn Sie unter OS X mit dem Docker-Tool arbeiten, befolgen Sie diese Anweisungen.
Starten Sie den Daemon neu und konfigurieren Sie Ihre Umgebung:
docker-machine restart
Und dann
docker-machine env
Endlich,
eval $(docker-machine env)
So testen Sie, ob der Dämon läuft:
docker ps -a
oder docker-machine ls
. Dadurch werden alle Container aufgelistet.
Ich wusste, dass es in diesem Beitrag bereits viele Antworten gibt. Ich möchte nur eine einfache Antwort hinzufügen, die das oben erwähnte Problem löst.
Sudo systemctl start docker
Führen Sie den obigen Befehl aus, um alle Docker-bezogenen Threads/Dienste zu starten.
Folgender DOC - Site von Docker: Docker als Benutzer ohne Rootberechtigung verwalten
1) Docker Group erstellen
Sudo groupadd docker
2) Benutzer zur Docker-Gruppe hinzufügen, um die Privilegien der Gruppe zu erhalten.
Sudo usermod -aG docker $USER
Überprüfen Sie, ob die Umgebungsvariable DOCKER_Host für Ihre Shell festgelegt ist.
env | grep DOCKER_Host
Wenn es existiert,
unset DOCKER_Host
Dann sollte das funktionieren:
docker run hello-world
Verwenden Sie die neue Docker Community Edition-App für macOS. Zum Beispiel:
Deinstallieren Sie alle Docker Homebrew-Pakete, die Sie bisher installiert haben:
brew uninstall docker-compose
brew uninstall docker-machine
brew uninstall docker
Installieren Sie eine App manuell oder über Homebrew-Cask :
brew cask install docker
Hinweis: Diese App erstellt die erforderlichen Links zu docker
, docker-compose
, docker-machine
usw.
Überprüfen Sie nach dem Ausführen der App das Symbol eines Docker-Wals im Statusmenü.
docker
, docker-compose
, docker-machine
-Befehle wie üblich in Terminal verwenden können.Verbunden:
Laden Sie den Docker CE von der Downloadseite herunter und befolgen Sie die Anweisungen.
Ich habe das gleiche Problem. In CentOS 6.5:
ps aux |grep `cat /var/run/docker.pid`
Wenn sich herausstellt, dass kein Docker-Daemon-Prozess vorhanden ist, gebe ich Folgendes ein:
docker -d
Dann Ctrl + D Docker zu stoppen. Da wir die Option -d
verwenden, wird Docker als Daemon ausgeführt. Jetzt können wir tun:
service docker start
Dann kann ich einen docker pull centos
machen. Das ist alles.
HINWEIS: Wenn dies nicht funktioniert, können Sie yum update
versuchen und diese dann erneut wiederholen, da ich yum install
davor habe.
Zur Behebung müssen Sie die folgenden Befehle im Terminal ausgeben. Ich erkläre jeden Schritt:
# Uninstall Docker from apt packages
$ Sudo apt-get remove docker docker.io
# Remove it from the libraries just to be
# sure it's gone forever
$ Sudo rm -rf /var/lib/docker/*
Wenn Sie nun die Dinge vereinfachen und mehr Zeit benötigen, können Sie mein init
-Skript mit dem Parameter installDocker
ausführen:
# Pull the init script from GitHub
$ wget https://github.com/dminca/dotfiles/blob/master/init
# Add rights to run the script
$ chmod 755 init
# Just run the script with the installDocker parameter
$ ./init installDocker
Ein Neustart ist optional, aber ich empfehle Ihnen, dies zu tun, um sicherzustellen, dass alles reibungslos läuft.
Der Docker Service ist möglicherweise nicht aktiv.
Wenn Sie mit RedHat/Fedora/CentOS arbeiten, probieren Sie dies bitte aus:
Sudo systemctl start docker
Wenn Sie unter Ubuntu/Debian sind:
Sudo service start docker
Docker wird auf Ihrem Host und dem entsprechenden Port ausgeführt.
Ich hatte das gleiche Problem mit Docker 1.10 unter Ubuntu 14.04 und keine der angegebenen Antworten funktionierte. Für mich bestand der Fix darin, den Speichertreiber beim Ausführen des Docker-Daemons anzugeben.
Sudo docker daemon --storage-driver=devicemapper
Überprüfen Sie, ob Sie Docker Machine verwenden :)
Führen Sie docker-machine env default
aus, um den Trick auszuführen.
Weil laut Dokumentation:
Docker Machine ist ein Tool, mit dem Sie Docker Engine unter .__ installieren können. virtuelle Hosts und verwalten Sie die Hosts mit
docker-machine
-Befehlen. Sie kann Machine verwenden, um Docker-Hosts auf Ihrem lokalen Mac oder Windows zu erstellen in Ihrem Unternehmensnetzwerk, in Ihrem Rechenzentrum oder in der Cloud Anbieter wie AWS oder Digital Ocean.Mit
docker-machine
-Befehlen können Sie starten, untersuchen, stoppen und Starten Sie einen verwalteten Host erneut, aktualisieren Sie den Docker-Client und den Daemon und Konfigurieren Sie einen Docker-Client, um mit Ihrem Host zu kommunizieren.Richten Sie die CLI der Maschine auf einen laufenden, verwalteten Host, und Sie können .__ ausführen.
docker
befiehlt direkt auf diesem Host. Führen Sie beispielsweise .__ aus.docker-machine env default
Um auf einen Host mit dem Namendefault
zu verweisen, folgen Sie auf dem Bildschirm Anweisungen zum Abschließen derenv
-Einrichtung und Ausführen vondocker ps
,docker run hello-world
und so weiter.
Sie können den Befehl verwenden
Sudo service docker stop
Sudo service docker start
um es einfach zu starten.
Ich habe auch das Problem "Verbindung mit dem Docker-Dämon kann nicht hergestellt werden. Läuft der Docker-Dämon auf diesem Host?".
Ich hatte vergessen, Sudo
zu verwenden. Ich hoffe, es hilft einigen von uns.
$:docker images
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
$:Sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
Ok, ich hatte heute dieses Problem. Dann sah ich viele Antworten, aber es schien keine für mich gearbeitet zu haben. Zuerst waren die meisten Anweisungen an Linux gerichtet. Und für die Mac-Version sprachen sie alle über den Betrieb einer Docker-Maschine. Ich gehe davon aus, dass Sie eine Docker-Maschine verwenden, wenn Sie die Docker-Toolbox installieren, da Docker in einer virtuellen Maschine für Windows- und Mac-Plattformen ausgeführt wird. Aber 2017 und Docker für Mac ist wirklich stabil, so dass die Toolbox nicht verwendet werden muss.
Nicht sicher, wie der Dämon aufgehört hat. Aber um es neu zu starten, musste ich nur "Applications" gehen und auf das Dockersymbol doppelklicken. Ich wurde um ein Update gebeten und ein Relaunch durchgeführt, das ich akzeptierte. Danach funktionierte alles wie ein Zauber.
Versuchen Sie, die Docker-Konfigurationsdatei docker
oder docker-network
in /etc/sysconfig
zu ändern:
(... ~ v1.17)
docker
Datei:OPTIONS= -H fd://
oder (v1.18):
docker-network
datei:DOCKER_NETWORK_OPTIONS= -H unix:///var/run/docker.sock
Wenn das erneute Erstellen von TLS-Zertifikaten nicht funktioniert
docker-machine regenerate-certs default
Versuchen Sie, den Docker-Computer neu zu starten und die env-Variable einzustellen:
docker-machine restart default
eval $(docker-machine env default)
Überprüfen Sie, ob die Maschine läuft mit:
docker-machine ls
oder alternativ
docker run hello-world
Das hat bei mir funktioniert. Wenn Sie den Dämon jedoch noch nicht eingerichtet haben, wird in Docker-Problembehandlungsseite ein Vorgang zum Stoppen, Entfernen und Erstellen einer neuen Maschine beschrieben.
Ich hatte ein ähnliches Problem.
In meinem Fall bestand die Lösung darin, eine veraltete Docker-Version zu entfernen. Ich nehme an, dass dies Konflikte verursacht hat.
Auf Ubuntu:
Sudo apt remove docker
löste das Problem für mich
sie können den Dämon mit dem folgenden Befehl ausführen:
Sudo Nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock &
Das Skript lässt den Daemon im Hintergrund laufen, und wenn der Docker bereit ist, können Sie testen, ob er Befehle akzeptiert.
Sudo docker info
weitere Informationen finden Sie hier: https://www.upcloud.com/support/how-to-configure-docker-swarm/
Ich bin überrascht, dass niemand darauf schon geantwortet hat:
Sudo docker network create persistence_backend
Tun Sie dies, wenn Sie sowohl Docker als auch Docker-Compose ausführen
Hast du versucht, es aus- und wieder einzuschalten? :-)
Ich hatte das gleiche Problem nach dem Upgrade auf Docker 1.10.1 auf meinem Mac.
Auf dem Docker Quickstart-Terminal
$ exit
$ exit
dann
standardeinstellung für Docker-Maschine
dann Docker Quickstart Terminal neu gestartet
Das hat mein Problem gelöst.
Unter Mac OS-X kann dies nur bedeuten, dass die Docker-Installation veraltet ist oder nicht läuft. Laden Sie einfach das neueste Docker von der offiziellen Website herunter und installieren Sie es.
Arbeitete für mich.
Wenn Sie gitlab-ci/gitlab-runner verwenden, erhalten Sie diese Fehlermeldung, wenn Sie nicht über Zugriffsberechtigungen für /var/run/docker.sock
verfügen.
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
Um das Problem zu lösen:
Sudo usermod -aG docker gitlab-runner
Überprüfen Sie mit:
Sudo -u gitlab-runner -H docker info
Hoffentlich hilft das.