Docker kan geen verbinding maken met docker-daemon

Nadat ik mijn Docker-versie heb bijgewerkt naar 0.8.0, krijg ik een foutmelding bij het invoeren van sudo docker version:

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?

En ik heb de instructies gevolgd en het commando sudo docker -dingevoerd, en ik kreeg dit:

[/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

Hoe los ik het probleem op?


Antwoord 1, autoriteit 100%

Linux

De Stappen na installatie voor Linuxdocumentatie onthult de volgende stappen:

  1. Maak de groep docker.
    sudo groupadd docker
  2. Voeg de gebruiker toe aan de groep docker.
    sudo usermod -aG docker $(whoami)
  3. Log uit en weer in om ervoor te zorgen dat docker werkt met de juiste machtigingen.
  4. Start docker.
    sudo service docker start

Mac OS X

Zoals Dayel Ostracozegt dat het nodig is om omgevingsvariabelen toe te voegen:

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

De docker-machine startOpdracht geeft de opmerkingen uit om het proces te begeleiden.


Antwoord 2, Autoriteit 25%

Linux

Om Docker Daemon op Linux (From CLI ), RUN:

$ sudo service docker start # Ubuntu/Debian

OPMERKING: Sla de $teken over bij het kopiëren en plakken.

Op RedHat / CentOS, RUN: sudo systemctl start docker.

Voer het initialiseer het “basis” -bestandssysteem:

$ sudo service docker stop
$ sudo rm -rf /var/lib/docker
$ sudo service docker start

of handmatig zoals:

$ sudo docker -d --storage-opt dm.basesize=20G

Installeer docker-machineop Linux

Om machine binaries op Linux te installeren:

  • lokaal:

    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'
    

MacOS

Op MacOS De dockerBinary is slechts een client en u kunt het niet gebruiken om de Docker Daemon uit te voeren, omdat Docker Daemon Linux-specifieke kernel-functies gebruikt, daarom kunt u Docker native in OS niet uitvoeren X. Dus u moet docker-machineinstalleren om VM te maken en eraan te bevestigen.

Installeer docker-machineop MacOS

Als u docker-machineOpdracht nog, installeer het met een van de volgende methoden:

  • met behulp van brouwen opdracht: brew install docker-machine docker.
  • Handmatig van Github :

    install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine
    

Zie: Aan de slag met Docker voor Mac .

Configureer docker-machineop MacOS

Start Docker Machine Via Homebrew, Run:

brew services start docker-machine

Om een ​​defaultMachine (als u er een niet hebt, zie: docker-machine ls):

docker-machine create --driver virtualbox default

Stel vervolgens de omgeving in voor de Docker-client:

eval "$(docker-machine env default)"

Dubbele-cheque per lijst met containers:

docker ps

Zie: Aan de slag met Docker Machine en een lokale VM .


Installeer Docker.App op MacOS

Als alternatief tot bovenstaande oplossing kunt u een Docker-app installeren door:

brew cask install docker

Controleer dit POST voor meer informatie . Zie ook: kan geen verbinding maken met de Docker Daemon op MacOS


Antwoord 3, Autoriteit 20%

Als u Docker op OS X gebruikt, heeft het uitvoeren van de volgende evaluatie voor mij gewerkt.

eval "$(docker-machine env default)"

Als je deze evaluatieverklaring liever niet bij elke terminalsessie hoeft uit te voeren, kun je dit toevoegen aan je bash_profile:

#Docker
eval "$(docker-machine env default)"

Zorg ervoor dat u de terminalsessie opnieuw start of de broncode uitvoert op bash_profileom de wijzigingen door te voeren.


Antwoord 4, autoriteit 14%

Na een gedetailleerd onderzoek lijkt dit probleem elke keer op te treden nadat Mac OS X opnieuw is opgestart(of de virtuele Docker-machine opnieuw is opgestart), waardoor de Docker-client geen verbinding kan maken met de Docker-daemon.

Om het probleem op te lossen, kunt u:

A) Installeer Docker Toolbox opnieuw met het officiële installatieprogramma (https://www.docker.com/ products/docker-toolbox), of gewoon

B) Voer de volgende opdrachten in volgorde uit:

# 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) Hetzelfde als (B), u kunt ook de volgende regel kopiëren en plakken om alle drie de opdrachten uit te voeren:

docker-machine start default; docker-machine regenerate-certs default; eval "$(docker-machine env default)"

In het geval u de volgende foutmelding krijgt:

Error getting SSH command: Something went wrong running an SSH command!
command : cat /etc/os-release
err     : exit status 255
output  :

voer de drie commando’s gewoon nog een keer uit, en het zou de tweede keer moeten werken.


Antwoord 5, autoriteit 7%

Dit gebeurt meestal als je niet in de docker-groep zit. Je kunt jezelf toevoegen aan de dockergroep met:

sudo usermod -aG docker yourusername

of

sudo usermod -aG docker $(whoami)

Hierna moet u uitloggen en weer inloggen op de server.

Als alternatief kunt u elk Docker-commando sudogebruiken.


Antwoord 6, autoriteit 5%

Als alle andere oplossingen hierboven niet werken, kun je proberen het eigendom van /var/run/docker.sockte controleren:

ls -l /var/run/docker.sock

Als je niet de eigenaar bent, verander dan van eigenaar met het commando:

sudo chown *your-username* /var/run/docker.sock

Dan kun je doorgaan en proberen de Docker-commando’s probleemloos uit te voeren 😀


Antwoord 7, autoriteit 3%

U kunt de opdracht gebruiken

sudo service docker stop && sudo service docker start

OF

sudo service docker restart

om het eenvoudig opnieuw te starten.


Antwoord 8, autoriteit 3%

De beste manier om erachter te komen waarom Docker niet werkt, is door de daemon handmatig uit te voeren.

$ sudo service docker stop
$ ps aux | grep docker  # do this until you don't see /usr/bin/docker -d
$ /usr/bin/docker -d

De Docker-daemon logt in op STDOUT, dus hij begint alles uit te spugen.

Dit was wat mijn probleem was:

[8bf47e42.initserver()] Creating pidfile
2015/01/11 15:20:33 pid file found, ensure docker is not running or delete /var/run/docker.pid

Dit kwam doordat de instantie was gekloond vanaf een andere virtuele machine. Ik moest alleen het pid-bestand verwijderen en daarna werkte alles.

Natuurlijk, in plaats van blindelings aan te nemen dat dit zal werken, raad ik aan de daemon nog een keer handmatig uit te voeren en de loguitvoer te controleren op eventuele andere fouten voordat de service opnieuw wordt opgestart.


Antwoord 9, autoriteit 2%

Doe een ps aux | grep dockerom te zien of de daemon draait. Indien niet /etc/init.d/docker start


Antwoord 10, autoriteit 2%

Als u het bericht Can't connect to docker daemon. Is 'docker -d' running on this host?, u kunt dit controleren met docker version.

Als je de informatie ziet zoals Docker Client wordt uitgevoerd. maar Docker Server niet, het is duidelijk dat u de Docker-server moet starten.

In CentOS kun je servicegebruiken om de Docker-server te starten of te stoppen.

$ sudo service docker stop
$ sudo service docker start

Nadat u docker versionheeft getypt, krijgt u de informatie van Docker Client en Docker Serveren de Docker-daemon is gestart.


Antwoord 11, autoriteit 2%

Ik heb een soortgelijk probleem. Ik moest uitloggen en opnieuw inloggen bij shell omdat ik zojuist Docker heb geïnstalleerd en de volgende opdracht niet in mijn omgeving werd weergegeven.

export DOCKER_HOST=127.0.0.1:4243 >> ~/.bashrc

Antwoord 12, autoriteit 2%

Ik herstart Docker nadat ik het heb geïnstalleerd:

$ sudo service docker stop
$ sudo service docker start

En het werkt.


Antwoord 13

Gebruik Docker CE-app

macOS

Gebruik de nieuwe Docker Community Edition-appvoor macOS. Bijvoorbeeld:

  1. Verwijder alle Docker Homebrew-pakketten die je tot nu toe hebt geïnstalleerd:

    brew uninstall docker-compose
     brew uninstall docker-machine
     brew uninstall docker
    
  2. Installeer een app handmatigof via Homebrew-Cask:

    brew install --cask docker
    

Opmerking: deze app maakt de nodige links naar docker, docker-compose, docker-machine, enz.

  1. Na het uitvoeren van de app, bekijk je het Docker-walvispictogram in het statusmenu.
  2. Nu zou je de commando’s docker, docker-compose, docker-machinezoals gewoonlijk moeten kunnen gebruiken in de Terminal.

Gerelateerd:

Linux/Windows

Download de Docker CE van de downloadpaginaen volg de instructies.


Antwoord 14

Ik heb met dit probleem te maken gehad en ik heb Docker opnieuw opgestart met deze opdrachten:

$ sudo service docker stop
$ sudo service docker start

Maar ik heb mijn probleem niet opgelost, omdat ik vergat mijn Docker-commando’s uit te voeren zonder sudo. Voor degenen die met dit probleem worden geconfronteerd, probeer dat te controleren.

Probeer

$ sudo docker info

in plaats van dit:

$ docker info

Antwoord 15

Ik heb dezelfde fout en het proberen van docker-machine regenerate-certsof eval..werkte niet voor mij.

Dit op OS X 10.11.3 (El Capitan) en Docker v1.10.1. Ik kon het alleen repareren door docker-machine te verwijderen en opnieuw te maken. Bron

Als u docker-machine lsuitvoert, ziet u een soortgelijke uitvoer als hieronder;

DOCKER

Onbekend

FOUTEN

Kan de docker-versie niet opvragen: kan niet
verbinding maken met het eindpunt van de docker-engine

Probeer uw Docker-machine te verwijderen met;

docker-machine rm -f default

Waar defaultde naam van uw Docker-machine is. Dan;

docker-machine create -d virtualbox default

Maakt een nieuwe Docker-machine.

Controleer of alles er nu normaal uitziet (geen fouten of onbekende Docker) met:

docker-machine ls

Vergeet tot slot niet om "$(docker-machine env default)"uit te voeren voordat u doorgaat of voer de Docker Quickstart Terminal uit die dit voor u doet…


Antwoord 16

Ik wist dat er al veel antwoorden in dit bericht staan. Ik zou graag een eenvoudig antwoord willen toevoegen waarmee het bovengenoemde probleem is opgelost.

sudo systemctl start docker

Voer het bovenstaande commando uit en het zal alle docker-gerelateerde threads/services starten.


Antwoord 17

Probeer de huidige gebruiker toe te voegen aan de dockergroep:

sudo usermod -aG docker $USER

Vervolgens uitloggen en inloggen.


Antwoord 18

Ik had hetzelfde probleem: “Kan geen verbinding maken met docker-daemon.” (behalve dat ik geen ‘bestand niet gevonden’-fout kreeg toen ik probeerde de server te starten.)

‘ps’ toonde aan dat “/usr/bin/docker -d” nog steeds actief was

Ik realiseerde me echter dat het me nooit was gelukt om de server zelf te draaien. Elke poging had geleid tot

...
2014/03/24 21:57:29 pid file found, ensure docker is not running or delete /var/run/docker.pid

Dus ik realiseerde me te laat dat het installeren van docker de daemon misschien had geregistreerd met upstart, die het voor mij had gestart. Daarom mislukt het proberen om de daemon te doden om hem handmatig opnieuw op te starten (bewerking niet toegestaan). Dus ik deed een

sudo kill -9 <PID>

over het daemon-proces. Een andere daemon nam onmiddellijk zijn plaats in, en deze nieuwe laat mijn CLI-client nu verbinding maken:

$ 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

Antwoord 19

De DOC-site van Docker volgen: Beheer Docker als een niet-rootgebruiker

1) Docker-groep maken

sudo groupadd docker 

2) Maak de gebruiker lid van de docker-groep om de groepsrechten te krijgen.

sudo usermod -aG docker $USER

Controleer of de omgevingsvariabele DOCKER_HOST is ingesteld voor uw shell.

env | grep DOCKER_HOST

Als het bestaat,

unset DOCKER_HOST

Dan zou dit moeten werken:

docker run hello-world

Antwoord 20

Ik had net hetzelfde probleem, draaiend op Amazon AWS.

Dit is wat ik heb geprobeerd:

  • Stel docker-machinelokaal in met een reeds bestaande AWS-instantie
  • Algemene instellingen gebruikt
  • Het was een beetje verbonden, maar omdat de externe poort was gesloten, mislukte het
  • Daarna weigerde de Docker-daemon op te starten, maar het uitvoeren van dockerdwerkte wel…

Het is als volgt getest op de externe machine:

service docker start # Also restart, no success
systemctl start docker # Also restart, no success
dockerd # Success

Ik heb /var/lib/dockerverwijderd en alles verwijderd, maar er was geen succes na herinstallatie. Helaas heb ik geen logs van storingen opgeslagen, maar docker.serviceweigerde gewoon te starten.

Maar wat uiteindelijk mijn probleem oploste, was eigenlijk:

sudo usermod -aG docker $(whoami)

Antwoord 21

In april 2020 op MacOS Catalina hoeft u alleen maar de desktoptoepassing te openen:


Antwoord 22

Ik heb hetzelfde probleem. In CentOS 6.5:

ps aux |grep `cat /var/run/docker.pid`

Als het laat zien dat er geen Docker-daemonproces bestaat, typ ik:

docker -d

Vervolgens Ctrl+ Dom Docker te stoppen. Omdat we de optie -dgebruiken, zal Docker als daemon draaien. Nu kunnen we het volgende doen:

service docker start

Dan kan ik een docker pull centosdoen. Dat is alles.

OPMERKING: als deze niet werken, kun je yum updateproberen en deze vervolgens opnieuw herhalen, omdat ik hiervoor yum install.


Antwoord 23

Als je op OS X draait met de Docker-tool, volg dan dit.

Start de daemon opnieuw en configureer uw omgeving:

docker-machine restart

En dan

docker-machine env

Eindelijk,

eval $(docker-machine env)

Om te testen of de daemon actief is:

docker ps -aof docker-machine ls. Hiermee worden alle containers weergegeven.


Antwoord 24

De Docker-serviceis mogelijk niet actief.

Als je een RedHat/Fedora/CentOS gebruikt, probeer dan dit:

sudo systemctl start docker

Als u Ubuntu/Debian gebruikt:

sudo service start docker

Docker begint te draaien op uw host en respectieve poort.


Antwoord 25

Om dit probleem op te lossen, moest ik de docker-service inschakelen:

sudo systemctl enable /usr/lib/systemd/system/docker.service

Antwoord 26

Controleer of je Docker Machine gebruikt 🙂

Voer docker-machine env defaultuit.

Omdat volgens documentatie:

Docker Machine is een tool waarmee u Docker Engine kunt installeren op
virtuele hosts, en beheer de hosts met docker-machine-opdrachten. Jij
kan Machine gebruiken om Docker-hosts te maken op uw lokale Mac of Windows
box, op uw bedrijfsnetwerk, in uw datacenter of in de cloud
providers zoals AWS of Digital Ocean.

Met behulp van docker-machine-opdrachten kunt u starten, inspecteren, stoppen en
herstart een beheerde host, upgrade de Docker-client en daemon, en
Configureer een Docker-client om met uw host te praten.

Point de machine CLI op een hardloop-, beheerde host en u kunt rennen
dockerOpdrachten rechtstreeks op die gastheer. Bijvoorbeeld
docker-machine env defaultOm naar een host te wijzen dat defaultwordt genoemd, volgt u op het scherm
Instructies om envSetup te voltooien en voer docker psuit,
docker run hello-world, enzovoort.

https://docs.docker.com/machine/overzicht/


Antwoord 27

  1. Ik had ook hetzelfde probleem. Het probleem was in sockets toegewezen aan Docker-daemon en Docker-Client.
  2. Ten eerste is toestemming niet ingesteld voor de Docker-Client op Docker.Sock U kunt het instellen met behulp van “Sudo UserMod -ag Docker $ User”
  3. Controleer vervolgens uw bash-bestand waar de Docker-Client actief is, voor mij was het op 0.0.0.0:2375, terwijl Docker-Daemon op Unix-socket draaide. (Het is ingesteld in het configuratiebestand van Dockerd).
  4. commentaar op de basashlijn en het zal goed werken.
  5. Maar als u het wilt laten werken aan de TCP-poort in plaats van UNIX-aansluiting, wijzigt u het configuratiebestand van DockerD en stelt u deze in op 0.0.0.0.2375 en houd de lijn in bash zoals het is indien aanwezig of op 0.0 is .0.0: 2375.

Antwoord 28

Om op te lossen, moet u de volgende opdrachten in de terminal uitgeven. Ik zal elke stap uitleggen:

# 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/*

Als je dingen wilt vereenvoudigen en meer tijd wilt krijgen, kun je mijn uitvoeren initscriptmet de parameter installDocker:

# 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

Een herstart is optioneel, maar ik raad u aan dit te doen om er zeker van te zijn dat alles soepel verloopt.


Antwoord 29

Ik had hetzelfde probleem met Docker 1.10 op Ubuntu 14.04 en geen van de gegeven antwoorden werkte. Voor mij was de oplossing om het opslagstuurprogramma op te geven bij het uitvoeren van de Docker-daemon.

sudo docker daemon --storage-driver=devicemapper

Antwoord 30

Ik had een soortgelijk probleem.

In mijn geval was de oplossing het verwijderen van een verouderde versie van docker. Ik neem aan dat dit wat conflicten veroorzaakte.

Op ubuntu:

sudo apt remove docker

het probleem voor mij opgelost

Other episodes