O comando do Docker não pode se conectar ao daemon do Docker

Eu quero fazer uma mudança para o Docker, então eu comecei a mexer com isso. Eu instalei o Docker em uma instalação do VirtualBox Ubuntu 15.10 (Wily Werewolf) e, como sugerido aqui , tentei executar uma imagem básica do nginx Docker:

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

Então eu verifiquei se o Docker estava funcionando:

 $ 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. 

Isso sugere que o daemon do Docker já está em execução, mas para ter certeza de que iniciei o daemon do 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.XX/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 

Então tentei executar a imagem novamente, mas com o mesmo resultado:

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

Eu tentei sudo’ing o comando, mas sem sucesso. O que estou fazendo de errado aqui?

Você precisa adicionar seu usuário atual [suponha que você esteja logado como ubuntu] ao grupo docker como segue

 sudo usermod -aG docker $(whoami) 

em seguida, efetue logout e login novamente no sistema ou reinicie o sistema. teste pela docker version

para mais informações sobre como instalar a documentação da janela de encaixe do mecanismo do docker

Adicione o usuário ao grupo de estivadores

  • Adicione o grupo de estivadores, se ainda não existir:

    sudo groupadd docker

  • Adicione o usuário conectado “$ {USER}” ao grupo de encaixe:

    sudo gpasswd -a ${USER} docker

  • Reinicie o daemon do Docker:

    sudo service docker restart

  • Faça uma nova newgrp docker ou efetue logout / in para ativar as alterações nos grupos.

Normalmente, o seguinte comando faz o truque:

 sudo service docker restart 

Isso, em vez do docker start do docker start para os casos em que o Docker parece estar em execução.

Se isso funcionar, conforme sugerido e em outra resposta e neste problema do GitHub , se você não tiver adicionado o grupo de encaixe, execute:

 sudo usermod -aG docker  

E você provavelmente é bom para ir.


Quanto a qualquer um que colidir com isso, na janela de encaixe de alguns sistemas operacionais não inicia logo após a instalação e, como resultado, a mesma can't connect to daemon message aparece. Nesse caso, você pode primeiro verificar se o Docker realmente não está em execução, verificando o status do seu serviço de encaixe executando:

 sudo service docker status 

Se a saída parecer algo como: docker stop/waiting vez de docker start/running, process 15378 , significa que o Docker não está ativo. Neste caso, certifique-se de iniciá-lo com:

 sudo service docker start 

E, como antes, você provavelmente será bom para ir.

note to self: Eu recebo o erro do título da pergunta quando me esqueço de executar o comando docker com o sudo :

sudo docker run ...

[Ubuntu 15.10]

Tive o mesmo problema e o que funcionou para mim foi:
Verificando a propriedade de /var/run/docker.sock

 ls -l /var/run/docker.sock 

Se você não for o proprietário, altere a propriedade com o comando

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

Então você pode ir em frente e tentar executar os comandos do docker sem problemas: D

Depois de instalar tudo e iniciar o serviço, tente fechar seu terminal e abri-lo novamente, depois tente puxar sua imagem

Editar

Eu também tive esse problema novamente, se a solução acima não funcionar, tente esta solução que é o comando abaixo

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

Considerações

Se o comando acima funcionar você provavelmente está com problemas de docker de rede, de qualquer forma isso resolve, para confirmar isso, veja o log com o comando abaixo

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

Se a saída tiver algo parecido

 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 

Você realmente está com problemas de rede, no entanto eu não sei ainda se a próxima vez que você reiniciar ( atualização , 2 meses sem problema novamente) seu sistema operacional irá obter esse problema novamente e se é um problema de bug ou instalação

Minha versão do 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 

Depois de instalar o docker no Ubuntu, executei o seguinte comando:

 sudo service docker start 

Tentaste?

Eu tive o mesmo problema. Foi lutando por dois dias para resolvê-lo.

Só funcionou quando eu fiz:

  1. De acordo com o Tutorial do Docker , você precisa adicionar a chave do Docker, se ainda não tiver sido adicionada, usando:

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

  2. Em seguida, certifique-se de conceder privilégios de janela de encaixe para si mesmo usando:

    $ sudo usermod -aG docker $USER

Espero que isso ajude voçe tambem.

Entre como root ( sudo su ) e tente isto:

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

Eu tenho o mesmo problema aqui, e o comando docker funcionou apenas como root, e também com este DOCKER_HOST vazio

PS: também tenha cuidado que a forma correta e oficial de instalar no Ubuntu é usar seus repositorys apt (mesmo em 15.10), não com essa coisa ” wget “.

Para OSX :

Depois de abrir a janela de encaixe e iniciar a máquina ‘padrão’ por meio do Terminal de início rápido ( https://docs.docker.com/engine/installation/mac/ ), tente os comandos do docker e obtenha a mensagem “não é possível conectar ao daemon do docker” , você precisa de algumas variables ​​env definidas :

eval "$(docker-machine env default)"

Então experimente com o docker run hello-world para ver se tudo está aveludado.

Esta questão é atualmente o número 3 em uma pesquisa no Google. Depois de fazer uma pesquisa sobre como resolver esse problema no meu sistema Linux, pensei em escrever essa resposta. O post original afirma que o problema está no Ubuntu, mas eu também experimentei o problema usando o Fedora. Com isso em mente, aqui está o que eu fiz para consertar o problema.

No Fedora 22

Instalando o Docker:

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

Depois de instalar o Docker:

Um usuário precisa ser adicionado ao grupo de encaixe.

 $> sudo usermod -aG docker 

O daemon do docker precisa ser iniciado

 $> sudo service docker start 

Você pode configurar o daemon para iniciar na boot

 $> sudo chkconfig docker on 

Você pode verificar se o serviço de encaixe está sendo executado

 $> service docker status 

E um último teste final

 $> docker run hello-world 

Para aqueles que já tentaram reiniciar sua máquina, descompactando a variável de ambiente DOCKER_HOST, como dito na documentação do docker env, e todo o resto, apenas tente ir com a documentação.

 sudo service docker restart 

Só isso fez o truque para mim mesmo depois de reiniciar a máquina.

Dando access não-root – do docker

Adicione o grupo de estivadores, se ainda não existir.

 $ sudo groupadd docker 

Adicione o usuário conectado “$ {USER}” ao grupo de encaixe.

Altere o nome de usuário para corresponder ao seu usuário preferido.

Você pode ter que sair e fazer login novamente para que isso tenha efeito.

 $ sudo gpasswd -a ${USER} docker 

Reinicie o daemon do Docker.

 $ sudo service docker restart 

Tente usar “sudo” com o comando que você está executando.

Eu tenho o mesmo problema durante a execução do docker.

você pode executar comandos como usuário sudo :

 sudo docker ***your command here*** 

Para o Ubuntu:
Aconteceu comigo quando atualizei o docker.
Você precisa desmascarar o serviço e o soquete e, em seguida, reinicie o serviço.

A seguir funcionou para mim:

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

O que aconteceu nos bastidores
O systemd também tem a capacidade de marcar uma unidade como completamente instável, automaticamente ou manualmente, ligando-a a / dev / null. Isso é chamado de mascaramento da unidade e é possível com o comando de máscara.

 sudo systemctl mask docker.service 

Você pode verificar a lista de serviços mascarados usando:

 sudo systemctl list-unit-files 

Saída do sudo systemctl list-unit-files

Para ativar o início automático / manual do serviço, você precisa desmascará-lo usando:

 sudo sytemctl unmask docker.service 

Agora, o serviço será ativado conforme mostrado abaixo insira a descrição da imagem aqui

Como o docker se liga a um soquete unix que é de propriedade do root durante a boot, o uso do ‘sudo’ junto com os comandos do docker funcionará.

  1. Eu também tive o mesmo problema. O problema estava nos sockets alocados para o docker-daemon e o docker-client.
  2. Primeiro, a permissão não foi definida para o docker-client no docker.sock. Você pode configurá-lo usando “sudo usermod -aG docker $ USER”
  3. Em seguida, verifique o arquivo bash onde o docker-client está sendo executado. Para mim, ele estava em 0.0.0.0:2375, enquanto o docker-daemon estava em execução no unix socket. (Ele foi definido no arquivo de configuração do dockerd).
  4. Apenas comente o bash-line e ele funcionará bem.
  5. Mas se você quiser fazê-lo funcionar na porta TCP ao invés do socket unix, mude o arquivo de configuração do dockerd e configure-o em 0.0.0.0.2375 e mantenha a linha no bash como está se presente ou configure-o para 0.0.0.0: 2375

Eu enfrentei o mesmo erro na instância do Amazon EC2. O problema foi corrigido depois de reiniciar a instância.

Adicionar usuário atual ao grupo de encaixe:

sudo usermod -aG docker $(whoami)

Para o Ubuntu 16.04

Arquivo interno /lib/systemd/system/docker.service change:

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

com:

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

Arquivo interno /etc/init.d/docker change:

 DOCKER_OPTS= 

com:

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

e reinicie o computador.

Talvez isso ajude alguém, pois a mensagem de erro é extremamente inútil, e eu passei por todas as etapas de permissão padrão inúmeras vezes sem sucesso.

O Docker ocasionalmente deixa variables ​​de ambiente fantasma no local que bloqueiam o access, apesar de seu sistema estar configurado corretamente. Os seguintes comandos shell podem torná-lo acessível novamente, se você o tiver executado em um ponto e ele simplesmente parou de cooperar após uma reboot:

 unset DOCKER_HOST unset DOCKER_TLS_VERIFY unset DOCKER_TLS_PATH docker ps 

Eu tinha uma instalação do docker anteriormente em funcionamento e, depois de reiniciar o meu laptop, ele simplesmente se recusou a funcionar. Foi adicionado corretamente ao grupo de usuários do docker, teve as permissions corretas no soquete, etc, mas ainda não pôde executar o docker login docker run ... , o docker run ... etc. Isso corrigiu isso para mim. Infelizmente eu tenho que executar isso em cada reboot. Isso é mencionado em alguns problemas do github também como uma solução alternativa, embora pareça um erro ser uma barreira persistente para a operação correta do Docker (nota: Estou no Arch Linux, não no OSX, mas esse era o mesmo problema para mim).

Testado no 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 
    Intereting Posts