O serviço Docker está claramente em execução:
$ systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2015-12-28 19:20:50 GMT; 3 days ago
Docs: https://docs.docker.com
Main PID: 1015 (docker)
CGroup: /system.slice/docker.service
└─1015 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs
$ ps wuf -u root | grep $(which docker)
root 1015 0.0 0.3 477048 12432 ? Ssl 2015 2:26 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs
No entanto, o próprio Docker se recusa a falar com ele:
$ docker info
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Estou executando a configuração padrão do Docker , ou seja, não alterei nenhum /etc
arquivo relacionado a este serviço.
Qual poderia ser o problema aqui?
arch-linux
docker
l0b0
fonte
fonte
sudo systemctl start docker
conserto, o daemon realmente não estava funcionando ...Esta pergunta já foi respondida, mas aqui está uma informação adicional.
Não importa se você está no Arch ou em outra distribuição como o Fedora ou Ubuntu, o Docker usa um arquivo de soquete para se comunicar. Quando você executa
docker
comandos, ele usa esse soquete para conversar com o daemon do Docker. Obviamente, o daemon deve estar em execução (e geralmente é desativado por padrão), mas se o usuário não puder acessar o soquete, também não poderá se comunicar com o daemon.Você instalaria o Docker primeiro a partir do repositório da distribuição. Algumas pessoas fazem o download de um script de instalação e o direcionam para um shell (
curl ... | sh
), mas é recomendável instalá-lo no repositório para que ele possa ser atualizado facilmente.Arco:
Fedora:
Como mencionado acima, o daemon pode ser desativado por padrão. Se você deseja usar o Docker, o daemon deve estar em execução.
Habilite-o (para que seja iniciado na inicialização):
Inicie agora (ou reinicie):
Agora, por padrão (se o grupo estivador estiver ausente), o soquete do Docker pertence à raiz:
É por isso que um usuário comum não pode conversar com o daemon do docker. Um usuário comum não tem permissões suficientes para acessar o soquete. Não é possível acessar o daemon, portanto, assume que não está sendo executado e mostra este erro:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
É por isso que muitas pessoas simplesmente iniciam todos os comandos do Docker como root, usando
sudo
. Mas, como descrito na outra resposta, o Docker tem seu próprio mecanismo para isso, portanto, o uso do sudo não é necessário.Idealmente, um grupo chamado
docker
é criado ao instalar o Docker. No entanto, se esse grupo não existir quando o daemon for iniciado, o arquivo de soquete pertencerá à raiz.Em alguns casos, esse grupo costumava ter um nome diferente, como
dockerroot
no Fedora . Verifiquegrep docker /etc/group
se existe um grupo no seu sistema. Se você já estiver usando esse grupo (seu usuário está nele), será necessário configurar o Docker para usá-lo:Em
/etc/sysconfig/docker
, adicione-G dockerroot
(nota: é uma solução alternativa, não a melhor solução):Após reiniciar o daemon, seu usuário poderá acessar o soquete:
Caso contrário, a maneira oficial seria usar o grupo chamado
docker
. Se existir, o Docker o utilizará automaticamente, ou seja, defina o grupo do soquete para esse grupo. Se não existir, tudo que você precisa fazer é criá-lo e reiniciar o daemon:O arquivo de soquete pertencerá a esse grupo:
Seu usuário deve estar no
docker
grupo para poder acessar o soquete:Pode ser necessário sair e fazer login novamente (ou
su - (user)
), correrid
para ver se você está no grupo.Você pode usar o Docker sem o sudo / root:
Finalmente, uma palavra de aviso. Somente usuários confiáveis devem ter permissão para controlar seu daemon do Docker . Consulte https://docs.docker.com/engine/security/security/ .
(Mas é claro, o mesmo se aplica ao sudo - apenas usuários confiáveis devem estar no
wheel
grupo.)fonte
depois saia e entre novamente
fonte
Depois de fazer algumas pesquisas para resolver esse problema no meu sistema Linux, pensei em escrever essa resposta. Aqui está o que eu fiz para corrigir o problema.
No Fedora 22
Instalando o Docker:
Depois de instalar o Docker:
Um usuário precisa ser adicionado ao grupo de janelas de encaixe.
O daemon do docker precisa ser iniciado
Você pode configurar o daemon para iniciar na inicialização
Você pode verificar se o serviço docker está em execução
E uma última verificação final
fonte
pacman
, usando emsystemctl
vez deservice
+chkconfig
).Se você estiver usando o Fedora 23 ou a variante Redhat, edite
/etc/sysconfig/docker
e modifique o seguinteReinicie a janela de encaixe.
Certifique-se de adicionar este grupo ao sistema e adicionar-se ao grupo.
fonte
Este comando funciona para mim
Encontrei a solução nesta página se você precisar de mais documentação. Por que não permitimos que usuários não root executem o Docker no CentOS, Fedora ou RHEL
fonte
Se você iniciou o mecanismo do docker com: sudo service docker start
você não pode se conectar com o usuário normal, mesmo que tenha se adicionado ao grupo 'janela de encaixe'.
Você pode simplesmente pará-lo com: sudo service docker stop
e inicie-o como um usuário normal: docker de serviço iniciar
fonte
docker group
até agora.sudo service start
trabalhou para mim. No entanto, observará se há algo novo.Eu também tive o mesmo problema. O problema estava nos soquetes alocados ao docker-daemon e docker-client.
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
Em seguida, verifique seu arquivo bash onde o docker-client está sendo executado. Para mim, foi definido como 0.0.0.0:2375, enquanto o docker-daemon estava sendo executado no soquete unix. (Foi definido no arquivo de configuração do dockerd).
Apenas comente a linha ofensiva e ela funcionará bem.
Mas se você quiser fazê-lo funcionar na porta TCP em vez do soquete unix, altere o arquivo de configuração do dockerd, defina-o como 0.0.0.0.2375 e mantenha a linha no bash como está presente, ou defina-a como 0.0. 0,0: 2375.
fonte
Estas são as etapas que segui para corrigir o seguinte
Adicione você mesmo ao grupo de janelas de encaixe
usermod -aG docker $USER
Corrija as permissões no docker socker e no comando.
sudo chgrp docker /usr/bin/docker
sudo chgrp docker /var/run/docker.sock
$ ll $(which docker) -rwxr-xr-x 1 root docker 18991768 08.07.2017 22:57 /usr/bin/docker*
$ ll /var/run/docker.sock srw-rw---- 1 root docker 0 23.07.2017 10:21 /var/run/docker.sock
Adicione variáveis ao ambiente de configuração para o comando docker
export DOCKER_HOST=unix:///var/run/docker.sock
Rest Docker
sudo systemctl restart docker
fonte