Impossibile connettersi alla finestra mobile dalla finestra mobile-componi


163

Ho installato docker-machine 0.1.0 e docker-compose 1.1.0 su Mac OS 10.8.5.
Docker-machine funziona normalmente e può connettersi tramite docker-machine ssh.

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

Tuttavia, non è possibile connettersi dalla finestra mobile-componi.

$ docker-compose up

Impossibile connettersi al demone Docker su http + unix: //var/run/docker.sock - è in esecuzione?

Se si trova in una posizione non standard, specificare l'URL con la variabile di ambiente DOCKER_HOST.

Il mio Dockerfile e docker-compose.yml sono qui.

Dockerfile

FROM centos:centos7
DOCKER_HOST tcp://192.168.99.100:2376

finestra mobile-compose.yml

web:
  build: .

Perché non riesco a connettermi? Qualche idea?


49
Funziona docker-machinecome root? Sono appena arrivato qui con lo stesso problema su Ubuntu ed erano i permessi sul socket - ha sudofatto il trucco.
SLD

7
Per quelli su Linux, potrebbe essere solo necessario essere aggiunti al gruppo docker .
Batandwa

5
corri: sudo docker-compose up
Girish Gupta,

Ho avuto lo stesso problema. È necessario riavviare la finestra mobile. sudo service docker restarto l' sudo service docker startho risolto con questo.
OM Bharatiya,

Per quelli che usano Ubuntu, dovresti usare sudo e non devi aggiungere utenti al gruppo docker . Visualizza i commenti nella risposta accettata: askubuntu.com/questions/477551/…
kas

Risposte:


89

La macchina Docker è in esecuzione. Ma è necessario esportare un ambiente per connettersi alla macchina Docker. Per impostazione predefinita, il dockerclient CLI sta tentando di comunicare con il demone utilizzando http+unix://var/run/docker.sock(come mostrato nel messaggio di errore).

Esportare le variabili di ambiente corrette utilizzando eval $(docker-machine env dev)e quindi riprovare. Puoi anche semplicemente eseguire docker-machine env devper vedere le variabili d'ambiente che esporterà. Si noti che uno di questi è DOCKER_HOST, proprio come il messaggio di errore suggerisce che potrebbe essere necessario impostare.


2
Puoi mettere quel comando ( eval "$(docker-machine env default)") nel tuo cestino / postattivare per assicurarti che sia sempre aggiornato.
Dannid,

1
Dove trovo il file bin / postactivate?
Lukas Schulze,

Oppure hai dimenticato di installare la finestra mobile: $ eval $(docker-machine env dev) Command 'docker-machine' not found, but can be installed with: sudo snap install docker
R OMS,

226

Soluzione semplice per me: sudo docker-compose up


AGGIORNAMENTO 2016-3-14: Ad un certo punto del processo di installazione della finestra mobile (o docker-compose?) C'è un suggerimento ed esempio per aggiungere il tuo nome utente al gruppo "docker". Ciò consente di evitare la necessità di "sudo" prima di tutti i comandi docker, in questo modo:

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

Guarda attentamente l'output dei comandi di installazione (sia docker sia la 2a installazione per docker-compose) e troverai il passaggio necessario. È anche documentato qui: https://subosito.com/posts/docker-tips/

Sudo? No!

Stanco di digitare sudo docker ogni volta che si emette un comando? Sì, c'è un modo per affrontarlo. Sebbene naturalmente la finestra mobile richieda un utente root, possiamo fornire un gruppo equivalente radice per le operazioni della finestra mobile.

È possibile creare un gruppo chiamato finestra mobile, quindi aggiungere l'utente desiderato a quel gruppo. Dopo aver riavviato il servizio docker, l'utente non dovrà digitare sudo ogni volta che eseguirà operazioni docker. Come appare sui comandi di una shell? come root, ecco qui:

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

Fatto!

AGGIORNAMENTO 2017-3-9

Le istruzioni di installazione di Docker sono state aggiornate qui.

Passaggi successivi all'installazione per Linux

Questa sezione contiene procedure opzionali per la configurazione degli host Linux per funzionare meglio con Docker.

Gestisci Docker come utente non root

Il daemon docker si collega a un socket Unix anziché a una porta TCP. Per impostazione predefinita, il socket Unix è di proprietà dell'utente root e gli altri utenti possono accedervi solo tramite sudo. Il daemon docker viene sempre eseguito come utente root.

Se non vuoi usare sudo quando usi il comando docker, crea un gruppo Unix chiamato docker e aggiungi utenti ad esso. Quando il daemon docker viene avviato, rende la proprietà del socket Unix leggibile / scrivibile dal gruppo docker.

Per creare il gruppo docker e aggiungere il tuo utente:

# 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

Questo comando scarica un'immagine di prova e la esegue in un contenitore. Quando il contenitore viene eseguito, stampa un messaggio informativo ed esce.


1
Allo stesso modo per qualche motivo sudo è l'unico modo per farlo funzionare: O: O: O
Jamie Hutber

12
Invece di disconnettersi ... è possibile utilizzare il comando:newgrp docker
Thiago Falcao,

Ahh risposta dettagliata con domanda :-)
Sukumaar

1
Ri: "Soluzione semplice per me: sudo docker-compose up". Quando provo quello, ottengo:sudo: docker-compose: command not found
mblakesley

38

Se hai iniziato a utilizzare la finestra mobile sudo, allora dovresti eseguire docker-compose con sudo Like:sudo docker-compose up


Ha funzionato per me quando ho corso sudo docker-compose buildinvece di docker-compose build.
anms_pro

26

Per impostazione predefinita, il daemon docker viene sempre eseguito come utente root, pertanto è necessario anteporre sudoai comandi Docker.

Se non vuoi usare sudo quando usi il comando docker, crea un gruppo Unix chiamato docker e aggiungi utenti ad esso. Quando il daemon docker viene avviato, rende la proprietà del socket Unix leggibile / scrivibile dal gruppo docker.

Per creare il gruppo docker e aggiungere il tuo utente:

  1. Crea il gruppo finestra mobile.

    $ sudo groupadd docker

  2. Aggiungi il tuo utente al gruppo docker.

    $ sudo usermod -aG docker $USER

  3. Disconnettersi e riconnettersi in modo da rivalutare l'appartenenza al gruppo.

  4. Verifica di poter eseguire i docker dei comandi senza sudo.

    $ docker run hello-world

Questo comando scarica un'immagine di prova e la esegue in un contenitore. Quando il contenitore viene eseguito, stampa un messaggio informativo ed esce.

I passaggi sopra descritti provengono dalla documentazione ufficiale di Docker .


Come possiamo farlo su Windows Docker installato?
Jeff Cook,

Oltre a ciò, quello che ho fatto per risolvere la composizione docker è stato impostare l'utente docker-composecome proprietario di /usr/local/bin/docker-composee quindi riavviare il servizio
Sam

groupl'iscrizione può essere aggiornata su - $USERper salvare la disconnessione e l'
attivazione

20

Quando viene visualizzato un errore :

ERRORE: Impossibile connettersi al demone Docker su http + docker: // localhost - è in esecuzione?

La soluzione sarebbe:

  1. Innanzitutto, prova a verificare che il servizio Docker sia attivo e in esecuzione come previsto sul tuo computer remoto / locale:sudo service docker status

    se non - esegui sudo service docker start o sudo systemctl start docker(dipende da alcune versioni di linux, vedi le istruzioni per iniziare con Docker ).

  2. In secondo luogo, avvia la finestra mobile come sudo sudo docker-compose up


16

sudo systemctl start docker - per avviare il servizio Docker.

sudo docker-compose up dopo di che.

Ho Fedora 26 e, cercando di risolvere lo stesso problema, alla fine ho inserito Docker Compose nella pagina degli sviluppatori Fedora e poi Docker nella pagina degli sviluppatori Fedora , che mi ha aiutato.

Probabilmente, il servizio docker considerato dalla community inizia con il sistema ed è sempre in background, ma per me non è stato così ovvio, ed è per questo che riesco a pensare al perché non esiste una risposta popolare come questa.

Nella pagina degli sviluppatori Fedora ci sono le istruzioni su come abilitare Docker per iniziare con il sistema:

sudo systemctl enable docker


Sostituisci systemctlcon launchctlse sei in esecuzione su Mac.
Rohit Swami,

6

Se sei su Linux potresti non averlo docker-machineinstallato poiché è installato di default solo su computer Windows e Mac.

In tal caso dovrai accedere a: https://docs.docker.com/machine/install-machine/ per trovare le istruzioni su come installarlo sulla tua versione di Linux.

Dopo l'installazione, riprovare a eseguire docker-compose upprima di provare qualsiasi cosa elencata sopra.

Spero che questo aiuti qualcuno. Questo ha funzionato per la mia installazione di devilbox in Fedora 25.


5

Oltre ad aggiungere utenti al gruppo docker, per evitare di digitare sudoripetutamente, è anche possibile creare un alias per dockercomandi in questo modo:

alias docker-compose="sudo docker-compose"
alias docker="sudo docker"

4

se si sta utilizzando la finestra mobile, è necessario attivare l'ambiente utilizzando la variabile env . nel caso in cui non si stia utilizzando la finestra mobile, quindi eseguire i comandi con sudo


3

Qualcuno ha controllato il registro?

Nel mio caso il messaggio di errore in /var/log/upstart/docker.logera:

Listening for HTTP on unix (/var/run/docker.sock) 
[graphdriver] using prior storage driver "aufs" 
Running modprobe bridge nf_nat failed with message: , error: exit status 1 
Error starting daemon: Error initializing network controller: Error creating default "bridge" network: can't find an address range for interface "docker0" 

Vale la pena ricordare che avevo acceso VPN, quindi: $ sudo service openvpn stop $ sudo service docker restart $ docker-compose up|start $ sudo service openvpn start era la soluzione.


3

La risposta di @srfrnk funziona per me.

Nella mia situazione, avevo il prossimo file docker-compose.yml:

  nginx:
    build:
      context: ./
      dockerfile: "./docker/nginx.staging/Dockerfile"
    depends_on:
      - scripts
    environment:
      NGINX_SERVER_NAME: "some.host"
      NGINX_STATIC_CONTENT_OPEN_FILE_CACHE: "off"
      NGINX_ERROR_LOG_LEVEL: debug
      NGINX_BACKEND_HOST: scripts
      NGINX_SERVER_ROOT: /var/www/html
    volumes:
      - ./docker-runtime/drupal/files:/var/www/html/sites/default/files:rw
    ports:
      - 80:80

./docker-runtimeproprietario e gruppo - è rootquando il proprietario degli altri file - il mio utente. Quando ho provato a costruirenginx

Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

Ho aggiunto ./docker-runtimeper .dockerignoree è risolto il mio problema.


3

mentre correvo docker-compose pull- stavo arrivando sotto l'errore

ERRORE: impossibile connettersi al demone Docker su http + docker: // localhost

sta correndo?

soluzione -

sudo service docker start 

problema risolto


2

Ho avuto gli stessi sintomi.

Solo diff che è successo solo durante il lavoro docker-compose build docker ps. È successo con la versione 2.xe 3.x. dockerServizio riavviato , quindi la macchina ... Anche reinstallato docker+ docker-compose.

Ho provato di tutto ma niente ha aiutato.

Alla fine ho provato a costruire il Dockerfile "manualmente" usando docker build.

Apparentemente ho avuto un problema di autorizzazione su un file / cartella all'interno del Dockercontesto. Stava cercando di leggere il contesto all'avvio della compilazione e non è riuscito con un messaggio di errore corretto. Tuttavia, questo messaggio di errore non si è propagato al docker-composequale mostra soloCouldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?

Avendo scoperto che la soluzione stava semplicemente aggiungendo il file / cartella al .dockerignorefile poiché non era necessario per la compilazione. Un'altra soluzione potrebbe essere stata chowno chmodno.

Ad ogni modo, forse questo potrebbe aiutare qualcuno a riscontrare lo stesso problema che non ha davvero nulla a che fare con dockerla visualizzazione del messaggio di errore fuorviante.


Ho avuto lo stesso problema: autorizzazioni per i file in un volume montato. Nel mio caso avevo un certificato SSL di proprietà di root che era stato inserito in un volume Docker. chown/ chmodrisolto. Messaggio di errore terribile ma ci stanno lavorando. Vedi github.com/docker/compose/issues/5318
bcattle

2

$ sudo docker-compose up

Ho seguito i passaggi come è nella risposta sopra per aggiungere $ USER alla finestra mobile del gruppo. non volevo aggiungere una nuova finestra mobile del gruppo perché nella mia installazione della finestra mobile si creava automaticamente un gruppo chiamato finestra mobile.

Docker CE è installato e funzionante. Il gruppo docker viene creato ma nessun utente viene aggiunto ad esso. Devi usare sudo per eseguire i comandi Docker. Passare alla postinstallazione Linux per consentire agli utenti non privilegiati di eseguire i comandi Docker e per altri passaggi di configurazione opzionali.

ma l'utilizzo della finestra mobile compose up non ha funzionato neanche. Ha dato lo stesso errore precedente. Quindi nel mio caso (Ubuntu 18.10) sudo docker-compose up ha risolto il problema.

ps: @ Grazie grazie per il consiglio.


1
Forse è meglio mettere la soluzione al primo posto, e quelli che spiegano di seguito. Inoltre puoi usare quei pulsanti sull'editor per formattare meglio la tua risposta.
Tiw

2

So che è sciocco, ma nel mio caso ho appena provato sudoe ha funzionato come un fascino.

nel tuo caso, prova solo: $ sudo docker-compose up


1

prova questo:

sudo ln -s / usr / local / bin / docker-compose / usr / bin / docker-compose


1

Ho risolto il problema usando i seguenti passaggi

$ sudo service docker status
$ sudo service docker start
$ sudo docker-compose up

ora docker-compose up funziona


0

Per me, ho iniziato ad aggiornare Docker e ho annullato a metà. Non ho notato che Docker non funzionava (se lo era, c'è un'icona nella barra di navigazione superiore del mio Macbook, per la carica residua della batteria, il tempo, ecc.). Una volta lanciato, e terminato l'aggiornamento, ha docker-compose upfunzionato di nuovo!


0

La mia installazione ha due casi per questo errore:

  • __pycache__ i file creati dall'utente root dopo l'esecuzione dei test di integrazione all'interno del contenitore sono inaccessibili per la finestra mobile (indica il problema originale) e la finestra mobile-componi (informa in modo ambiguo sull'host della finestra mobile);
  • microk8s bloccato la mia porta fino a quando non l'ho fermata.


0

la disconnessione e l'accesso di nuovo mi hanno aiutato. Nel mio caso era una nuova installazione, ho creato un nuovo utente, un nuovo gruppo quindi aggiunto l'utente al gruppo docker.

uscita uscita

quindi di nuovo ssh nel server


0

Quanto segue ha funzionato per me, non sono sicuro di quale parte ha fatto il trucco:

julian:project$ sudo service docker status
julian:varys$ 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 Wed 2020-07-15 01:21:16 UTC; 24min ago
     Docs: https://docs.docker.com
 Main PID: 6762 (dockerd)
    Tasks: 25
   CGroup: /system.slice/docker.service
           └─6762 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

julian:project$ export DOCKER_HOST=unix:///run/containerd/containerd.sock

julian:project$ sudo groupadd docker
groupadd: group 'docker' already exists
julian:project$ sudo gpasswd -a $USER docker
Adding user ubuntu to group docker
julian:project$ newgrp docker

julian:project$ ls -ln /var/run/ | grep docker
drwx------  5   0   0  120 Jul 15 01:10 docker
-rw-r--r--  1   0   0    4 Jul 15 01:10 docker.pid
srw-rw----  1   0 999    0 Jul 15 01:10 docker.sock

julian:project$ sudo rm /var/run/docker.sock                                                                                                                                                                                            
julian:project$ sudo rm /var/run/docker.pid

julian:project$ sudo service docker restart  
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.