Il comando Docker non può connettersi al demone Docker


246

Voglio passare a Docker, quindi ho appena iniziato a scherzare con esso. Ho installato Docker su un'installazione di VirtualBox Ubuntu 15.10 (Wily Werewolf) e, come suggerito qui, ho provato a eseguire un'immagine Docker di base nginx :

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Quindi ho verificato se Docker era in esecuzione:

$ sudo service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since vr 2015-11-06 08:41:48 CET; 15min ago
     Docs: https://docs.docker.com
 Main PID: 7542 (docker)
   CGroup: /system.slice/docker.service
           └─7542 /usr/bin/docker daemon -H fd://

nov 06 08:41:47 kramer65-VirtualBox systemd[1]: Starting Docker Application Container Engine...
nov 06 08:41:47 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:47.900410966+01:00" level=info msg="API ...ock"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.033514149+01:00" level=info msg="Fire...lse"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.141594321+01:00" level=info msg="Defa...ess"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.416294436+01:00" level=warning msg="Y...it."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.565507576+01:00" level=info msg="Load...rt."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567907022+01:00" level=info msg="Load...ne."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567945214+01:00" level=info msg="Daem...ion"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567969891+01:00" level=info msg="Dock....9.0
nov 06 08:41:48 kramer65-VirtualBox systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

Ciò suggerisce che il demone Docker è già in esecuzione, ma per essere sicuro di aver appena avviato il demone Docker manualmente:

$ sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock           
INFO[0000] [graphdriver] using prior storage driver "aufs" 
INFO[0000] Firewalld running: false                     
INFO[0000] Default bridge (docker0) is assigned with an IP address XXX.XX.X.X/XX. Daemon option --bip can be used to set a preferred IP address 
WARN[0000] Your kernel does not support swap memory limit. 
INFO[0000] Loading containers: start.                   

INFO[0000] Loading containers: done.                    
INFO[0000] Daemon has completed initialization          
INFO[0000] Docker daemon                                 commit=76d6bc9 execdriver=native-0.2 graphdriver=aufs version=1.9.0

Ho quindi provato a eseguire di nuovo l'immagine, ma con lo stesso risultato:

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Ho provato a annullare il comando, ma invano. Cosa sto facendo di sbagliato qui?


1
stesso problema. Sono anche su Ubuntu 15.10 :(
Daniel Loureiro il

1
stesso problema, ubuntu 15.10
Lucas Tettamanti,

1
Basta riavviare il servizio docker, tutto qui. Grazie @jim <pre> riavvio finestra mobile servizio sudo </pre>
Nasruddin,

1
Nasruddin, che sicuramente NON ha funzionato per me ... :-(
Rafael_Espericueta

1
Ho dovuto riavviare la macchina per farlo funzionare.
Romaroma,

Risposte:


443

È necessario aggiungere l'utente corrente al gruppo finestra mobile come segue:

sudo usermod -aG docker $(whoami)

quindi disconnettersi e accedere nuovamente al sistema o riavviare il sistema. prova didocker version

per ulteriori informazioni su come installare il docker-engine seguire la documentazione del docker


stupido ma ha funzionato anche per me @RobinLoxley, questo dovrebbe essere una non risposta reale solo un commento, fatemi sapere se si posta, io ti do un upvote;)
Benka

9
Sottolineo "disconnettersi e accedere nuovamente al sistema o riavviare il sistema"
Michele

3
La risposta di @Junaid di seguito mostra come evitare il passaggio di logout / login, nel caso in cui tu, come me, sei così pigro che non vuoi riavviare le tue app;)
brandizzi

Questo è esattamente ciò che è menzionato nell'esercitazione Docker, ma disconnettersi e riconnettersi non ha funzionato per me. Ho dovuto riavviare il sistema per farlo funzionare.
aalaap,

4
Vedo le informazioni sulla versione della finestra mobile, ma alla fine dell'output, vedoCannot connect to the Docker daemon. Is the docker daemon running on this host?
ghanbari,

137

Aggiungi l'utente al gruppo finestra mobile

  • Aggiungi il gruppo docker se non esiste già:

    sudo groupadd docker

  • Aggiungi l'utente connesso "$ {USER}" al gruppo docker:

    sudo gpasswd -a ${USER} docker

  • Riavvia il demone Docker:

    sudo service docker restart

  • Fare un newgrp dockero disconnettersi / accedere per attivare le modifiche ai gruppi.


1
Sembra che newgrp dockersia locale alla shell, non alla sessione di accesso. Questo non è affatto chiaro dalla pagina man.
Bergey,

1
Ha funzionato per me. Grazie!
Apokai,

L'unica risposta che ha funzionato! Su una macchina Linux cloud privata, e ha funzionato ancora!
Meghna Natraj,

Ha funzionato su Ubuntu 18.04! Grazie
Kshitij Saraogi il

33

Di solito, il seguente comando fa il trucco:

sudo service docker restart

Questo, invece che docker startper i casi in cui Docker sembra essere già in esecuzione.

Se funziona, come suggerito e in un'altra risposta e su questo problema di GitHub , se non ti sei aggiunto al gruppo docker, eseguilo eseguendo:

sudo usermod -aG docker <your-username> 

E molto probabilmente sei bravo ad andare.


Come per chiunque altro che si imbatte in questo, nella finestra mobile di alcuni sistemi operativi non si avvia subito dopo averlo installato e, di conseguenza, can't connect to daemon messageappare lo stesso . In questo caso puoi prima verificare che Docker non sia effettivamente in esecuzione controllando lo stato del tuo servizio docker eseguendo:

sudo service docker status

Se l'output assomiglia a qualcosa di simile: docker stop/waitinginvece di docker start/running, process 15378ovviamente significa che Docker non è attivo. In questo caso assicurati di avviarlo con:

sudo service docker start

E, come prima, molto probabilmente sarai bravo ad andare.


18

nota a se stesso: ottengo l'errore dal titolo della domanda quando dimentico di eseguire il dockercomando con sudo:

sudo docker run ...

[Ubuntu 15.10]


12

Aveva lo stesso problema e ciò che ha funzionato per me è stato:
Verifica della proprietà di /var/run/docker.sock

ls -l /var/run/docker.sock

Se non sei il proprietario, cambia la proprietà con il comando

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

Quindi puoi andare avanti e provare a eseguire i comandi docker senza problemi: D


2
Dopo aver esaurito tutte le altre possibilità, questo è ciò che ha funzionato su Sabayon / Gentoo Linux per me.
gerrit_hoekstra,

Quel file è di proprietà di rootma in dockergruppo. L'approccio corretto è quello di assegnare l'utente corrente al dockergruppo, secondo la documentazione di Docker:sudo groupadd docker && sudo usermod -aG docker $USER
Lucas Bustamante,

9

Dopo aver installato tutto e avviato il servizio, prova a chiudere il terminale e ad aprirlo di nuovo, quindi prova a estrarre l'immagine

modificare

Ho anche avuto di nuovo questo problema , se la soluzione sopra non funziona, prova questa soluzione che è il seguente comando

sudo mv /var/lib/docker/network/files/ /tmp/dn-bak

considerazioni

Se il comando sopra funziona probabilmente hai problemi con la finestra mobile di rete, comunque questo lo risolve, per confermare che, vedi il registro con il comando sotto

tail -5f /var/log/upstart/docker.log

Se l'output ha qualcosa del genere

FATA[0000] Error starting daemon: Error initializing network controller: could not delete the default bridge network: network bridge has active endpoints 
/var/run/docker.sock is up

Hai davvero problemi di rete, tuttavia non so ancora se al prossimo riavvio ( aggiornamento , 2 mesi nessun problema di nuovo) il tuo sistema operativo avrà nuovamente questo problema e se si tratta di un bug o un problema di installazione

La mia versione docker

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

8

Dopo aver installato la finestra mobile su Ubuntu, ho eseguito il seguente comando:

sudo service docker start

L'hai provato?


6

Ho avuto lo stesso problema. Ho lottato per due giorni per risolverlo.

Ha funzionato solo quando ho fatto:

  1. Secondo il tutorial di Docker , è necessario aggiungere la chiave Docker se non è già stata aggiunta usando:

    $ sudo wget -qO- https://get.docker.com/gpg | sudo apt-key add -

  2. Quindi assicurati di concedere i privilegi di finestra mobile a te stesso usando:

    $ sudo usermod -aG docker $USER

Spero che anche questo ti aiuti.


2
Il passaggio 2 può essere semplificato come:sudo usermod -aG docker $USER
johntellsall

5

inserisci come root ( sudo su) e prova questo:

unset DOCKER_HOST
docker run --name mynginx1 -P -d nginx

Ho lo stesso problema qui, e il comando docker ha funzionato solo come root, e anche con questo DOCKER_HOSTvuoto

PS: attenzione anche che il modo corretto e ufficiale di installare su Ubuntu è usare i loro repository apt (anche il 15.10), non con quella cosa " wget ".


quella cosa "wget" ha appena messo il repository docker nel tuo sorgente apt .... cioè la stessa cosa che ti viene chiesto di fare manualmente nel "modo corretto e ufficiale" ....
Alar,

1
Temo che ti sbagli, Alar. Il metodo "wget" aggiungerà il repository docker nel tuo sorgente apt, il che è buono, ma farà anche molte altre cose cattive come impostare un DOCKER_HOST env var, che impedirà alla finestra mobile di essere pronta all'uso. Non è perché entrambi i metodi aggiungono finestra mobile al repository che sono entrambi uguali.
Daniel Loureiro,

5

Per OSX :

Dopo aver aperto la finestra mobile e aver avviato la macchina "predefinita" tramite il Terminale di avvio rapido ( https://docs.docker.com/engine/installation/mac/ ), si provano i comandi della finestra mobile e si ottiene questo messaggio "Impossibile connettersi al demone della finestra mobile" , risulta che è necessario impostare alcune variabili env :

eval "$(docker-machine env default)"

Quindi provalo con docker run hello-worldper vedere se tutto è peachy.


5

Per quelli che hanno già provato a riavviare il computer, azzerando la variabile di ambiente DOCKER_HOST come indicato nella documentazione di docker env e tutto il resto, prova ad andare con il

sudo service docker restart

Solo questo ha funzionato per me anche dopo aver riavviato la macchina.


2
Ciò è necessario se si esegue solo il logout e il login.
Zhang LongQI,

4

Dare accesso non root - dalla finestra mobile

Aggiungi il gruppo docker se non esiste già.

$ sudo groupadd docker

Aggiungi l'utente connesso "$ {USER}" al gruppo docker.

Modifica il nome utente in modo che corrisponda al tuo utente preferito.

Potrebbe essere necessario disconnettersi e riconnettersi per rendere effettiva questa operazione.

$ sudo gpasswd -a ${USER} docker

Riavvia il demone Docker.

$ sudo service docker restart

3

Questa domanda è attualmente il numero 3 in una ricerca su Google. Dopo aver fatto qualche ricerca per risolvere questo problema sul mio sistema Linux, ho pensato di scrivere questa risposta. Il post originale afferma che il problema è su Ubuntu ma ho riscontrato anche il problema usando Fedora. Con questo in mente, ecco cosa ho fatto per risolvere il problema.

Su Fedora 22

Installazione di Docker:

$> curl -fsSL https://get.docker.com/ | sh

Dopo aver installato Docker:

È necessario aggiungere un utente al gruppo finestra mobile.

$> sudo usermod -aG docker

Il demone docker deve essere avviato

$> sudo service docker start

È possibile impostare il daemon per l'avvio all'avvio

$> sudo chkconfig docker on

È possibile verificare che il servizio docker sia in esecuzione

$> service docker status

E un ultimo controllo finale

$> docker run hello-world

Su Fedora 23, questo gruppo può essere chiamato dockerroot. Inoltre, probabilmente desideri installarlo dal repository (anziché curl ... | sh) in modo che possa essere aggiornato in seguito:dnf install docker
basic6

molti non hanno un "docker" di gruppo, quindi dobbiamo prima groupadd dockeraggiungerlo e poi aggiungerlo al tuo nome utentesudo usermod -aG docker your_username
TonyTony,

2

Prova a usare "sudo" con il comando che stai eseguendo.


"Ho provato a annullare il comando, ma senza successo. Qualcuno sa cosa sto facendo di sbagliato qui? Tutti i suggerimenti sono benvenuti!"
RhinoDevel,

2

Ho lo stesso problema durante l'esecuzione della finestra mobile.

puoi eseguire comandi come utente sudo :

sudo docker ***your command here***

2

Per Ubuntu: è
successo con me quando ho aggiornato la finestra mobile.
È necessario smascherare il servizio e il socket e quindi riavviare il servizio.

Di seguito ha funzionato per me:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

Ciò che è accaduto dietro le quinte del sistema
ha anche la possibilità di contrassegnare un'unità come completamente non avviabile, automaticamente o manualmente, collegandola a / dev / null. Questo si chiama mascheramento dell'unità ed è possibile con il comando maschera.

sudo systemctl mask docker.service

Puoi controllare l'elenco dei servizi mascherati usando:

sudo systemctl list-unit-files

Output di sudo systemctl list-unit-files

Per abilitare l'avvio automatico / manuale del servizio è necessario smascherarlo utilizzando:

sudo sytemctl unmask docker.service

Ora il servizio sarà abilitato come mostrato di seguito inserisci qui la descrizione dell'immagine


1

Poiché la finestra mobile si lega a un socket unix di proprietà di root durante l'avvio, l'utilizzo di "sudo" insieme ai comandi docker funzionerà.


1
  1. Ho avuto anche lo stesso problema. Il problema riguardava i socket assegnati a docker-daemon e docker-client.
  2. Innanzitutto, non è stata impostata l'autorizzazione per il client docker su docker.sock È possibile impostarlo utilizzando "sudo usermod -aG docker $ USER"
  3. Quindi controlla il tuo file bash in cui è in esecuzione il docker-client, per me era su 0.0.0.0:2375, mentre docker-daemon era in esecuzione su socket unix (è stato impostato nel file di configurazione di dockerd).
  4. Basta commentare la riga bash e funzionerà bene.
  5. Ma se vuoi farlo funzionare sulla porta TCP invece che su unix socket, modifica il file di configurazione di dockerd e impostalo su 0.0.0.0.2375 e mantieni la riga in bash com'è se presente o impostala su 0.0.0.0: 2375.

1

Forse questo aiuterà qualcuno, dato che il messaggio di errore è estremamente inutile, e ho ripetutamente seguito tutti i passaggi di autorizzazione standard senza successo.

Docker occasionalmente lascia in atto variabili di ambiente fantasma che bloccano l'accesso, nonostante il sistema sia configurato correttamente. I seguenti comandi di shell potrebbero renderlo nuovamente accessibile, se lo hai fatto girare ad un certo punto e ha smesso di cooperare dopo un riavvio:

unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

Avevo già installato una docker funzionante, e dopo aver riavviato il mio laptop si è semplicemente rifiutato di funzionare. È stato aggiunto correttamente al gruppo di utenti finestra mobile, ha avuto le autorizzazioni corrette sul socket, ecc, ma potrebbe ancora non funzionare docker login, docker run ...e così via Questa fisso per me. Sfortunatamente devo eseguirlo ad ogni riavvio. Questo è menzionato su un paio di problemi di github anche come soluzione alternativa, anche se sembra un bug che questa sia una barriera persistente al corretto funzionamento di Docker (nota: sono su Arch Linux, non su OSX, ma questo era lo stesso problema per me).


1

Testato in Ubuntu 16.04

# Create the docker group and add your user to the docker group
groupadd docker
usermod -aG docker $USER
newgrp docker

# Configure docker service to be exposed
mkdir -p /etc/systemd/system/docker.service.d
echo -e '[Service]\nExecStart=\nExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376' >> /etc/systemd/system/docker.service.d/override.conf

# restart service
systemctl daemon-reload
service docker restart

0

Ho riscontrato lo stesso errore sull'istanza di Amazon EC2. Il problema è stato risolto dopo il riavvio dell'istanza.


0

Aggiungi l'utente corrente al gruppo finestra mobile:

sudo usermod -aG docker $(whoami)


Si prega di formattare questo come codice! E spiega questo comando. E usa le --versioni lunghe (a partire da ) delle opzioni.
buhtz,

0

Per Ubuntu 16.04

/lib/systemd/system/docker.serviceModifica del file interno :

ExecStart=/usr/bin/dockerd fd://

con:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375

/etc/init.d/dockerModifica del file interno :

DOCKER_OPTS=

con:

DOCKER_OPTS="-H tcp://0.0.0.0:2375"

e quindi riavviare il computer.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.