Estou tentando aprender sobre o Docker , mas continuo recebendo mensagens de erro enigmáticas (para mim).
Possivelmente, o exemplo mais simples disso é tentar imprimir a versão do Docker que instalei:
$ sudo docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
FATA[0000] Get http:///var/run/docker.sock/v1.16/version:
dial unix /var/run/docker.sock: no such file or directory.
Are you trying to connect to a TLS-enabled daemon without TLS?
Acabei de ler o guia do usuário e seguir todas as etapas exatamente, por isso estou surpreso ao receber esta mensagem ... O que devo fazer agora?
Acabei de perceber que, se eu não usar sudo
, não recebo o erro:
$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8
Claro, isso não é uma solução, pois talvez eu precise usar em sudo
algum lugar no caminho ...
Acabei de encontrar outra página dizendo " Se você estiver usando o OS X , não deverá usar sudo
". Não sei se eles significam apenas para esse exemplo ou em geral.
boot2docker
), embora o OS X não seja mencionado explicitamente na pergunta ou nas tags. Se alguém estiver interessado em resposta genérica, consulte a minha resposta.Respostas:
Para mim, a execução
$(boot2docker shellinit 2> /dev/null)
corrigiu o problema.Isso executa a saída do
boot2docker shellinit
comando (as trêsset -x ...
linhas) na sua sessão de terminal atual, o que permite que odocker
comando saiba onde encontrar a máquina virtual boot2docker.Adicionar
$(boot2docker shellinit 2> /dev/null)
ao final do~/.bash_profile
arquivo garantirá que odocker
comando esteja configurado toda vez que você abrir o terminal.Para as pessoas que usam shell peixe:
boot2docker shellinit ^ /dev/null | source
.Observe que
2> /dev/null
(e o equivalente em peixe^ /dev/null
) são opcionais. Como o @ pablo-fernandez sugeriu, isso oculta asWriting ..
linhas.fonte
boot2docker start
antes de executar o shell init.Eu estava recebendo o mesmo erro no MacOS com o sudo e sem ele.
Eu o resolvi com:
PS: Obrigado ao Alan. Eu descobri que essa abordagem é recomendada na documentação oficial .
PS2: Às vezes
boot2docker init
pode ser necessário antes de executar dois comandos (obrigado Aaron).fonte
No meu caso (Linux Mint 17), fiz várias coisas e não tenho certeza sobre quais delas são totalmente necessárias.
Incluí pacotes ausentes do Ubuntu:
Um usuário foi adicionado ao grupo
docker
:Daemon iniciado (o openSUSE só precisa disso)
Obrigado \ Atribuição
Obrigado Usman Ismail , porque talvez tenha sido apenas a última coisa ...
Agradeço também ao github @ MichaelJCole pela solução que funcionou para mim, porque não verifiquei o daemon quando li o comentário de Usman.
Comentário do GitHub :
Obrigado ao fredjean.net post por observar os pacotes ausentes e esquecer as instruções de instalação padrão do Ubuntu e o google sobre outras maneiras
Obrigado ao comentário de brettof86 sobre openSUSE
fonte
sudo adduser $USER docker
,. Truque para fazê-lo em vigor no shell atual foicurgroup=$(id -gn) && newgrp docker && newgrp $curgroup
, adaptado de superuser.com/questions/272061/...O problema sublinhado é simples - falta de permissão para
/var/run/docker.sock
soquete de domínio unix.No capítulo da opção de soquete do Daemon da referência da Linha de Comando do Docker para o Docker 1.6.0:
As etapas necessárias para conceder direitos aos usuários são bem descritas nas instruções de instalação do Docker para o Fedora :
Saia e faça login novamente para que as alterações acima entrem em vigor. Observe que os pacotes Docker de algumas distribuições Linux (Ubuntu) já estão
/var/run/docker.sock
nodocker
grupo, tornando desnecessárias as duas primeiras etapas acima.No caso do OS X e
boot2docker
a situação é diferente; o daemon do Docker é executado dentro de uma VM, portanto aDOCKER_HOST
variável de ambiente deve ser configurada para essa VM para que o cliente do Docker possa encontrar o daemon do Docker. Isso é feito executando$(boot2docker shellinit)
no shell.fonte
boot2docker shellinit
e outros comandos é que esse comando não faz nenhuma alteração em si, mas gera apenas (imprime) comandos que você precisa executar sozinho. Você pode executarboot2docker shellinit
primeiro e, em seguida, copiar e executar manualmente cada comando a partir de sua saída. É mais fácil executar todos os comandos executandoboot2docker shellinit
em um subprocesso (com$()
sintaxe), pois dessa forma cada linha de saída está sendo executada automaticamente como um comando shell. Consulte docs.docker.com/installation/mac/#from-your-command-line onde isso é mostrado em detalhes.sudo service docker status
. No meu Ubuntu 14.04, ele não estava executando após a instalação, o que causou o erro.Verifique se o daemon do Docker está em execução:
Isso consertou para mim!
fonte
sudo service docker start
para mimsystemctl enable docker.service
esystemctl start docker.service
para usuários de Linux system.d (Arch no meu caso)sudo service docker restart
para mim$ docker version
consulta de comando é interna ao executável do Docker e não ao daemon / serviço em execução.$ docker images or $ docker ps or $ docker pull centos
são comandos que enviam consultas ao daemon / serviço docker em execução.docker
ou se utilizousudo
antes do comando, por exemplo$ sudo docker images
, ele não requer conectividade TLS.Visite a página de documentação do Docker Proteger o soquete do daemon do Docker .
Role um pouco até o topo e procure
warning section
por clareza.fonte
sudo usermod -a -G docker {username}
Você precisará fazer:
As seguintes configurações corrigiram o problema:
fonte
eval "$(boot2docker shellinit)"
É possível que você ainda não tenha permissão para o arquivo. Aconteceu comigo depois que me adicionei ao
docker
grupo usandomas ainda não saiu.
Para resolver isso, você pode fazer login novamente ou usar
sg docker "docker <subcommand> ..."
antes de sair.Se você estiver em grupo
docker
em/etc/group
, você deve ser capaz de executá-lo sem senha digitação.https://dingyichen.wordpress.com/2015/02/05/docker-dial-unix-varrundocker-sock-no-such-file-or-directory-are-you-trying-to-connect-to-a- tls-enabled-daemon-without-tls /
fonte
No Ubuntu após a instalação do lxc-docker, você precisa adicionar seu usuário ao grupo de usuários do docker :
Isso ocorre devido às permissões do arquivo de soquete:
NÃO EXECUTE usermod SEM "-a", como sugerido em um dos outros comentários, ou isso limpará a configuração de grupos adicionais e deixará o grupo "docker"
Isto é o que vai acontecer:
fonte
TLDR : Isso fez com que meu grupo de reuniões do Python resolvesse esse problema quando eu estava executando uma clínica na instalação do docker e a maioria dos usuários estava no OS X:
execute os
export
comandos que a saída fornecer, em seguidadeve dizer que funciona.
O Contexto (o que nos levou ao problema)
Liderei uma clínica na instalação do docker e a maioria dos participantes tinha o OS X, e encontramos esse problema e o superei em várias máquinas. Aqui estão as etapas que seguimos:
Primeiro, instalamos o homebrew (sim, alguns participantes não o possuíam):
Em seguida, obtivemos o cask, que usamos para instalar o virtualbox e, em seguida, o brew para instalar o docker e o boot2docker (todos necessários para o OS X). Não use o sudo para o brew. :
A solução
Foi quando encontramos o problema que o solicitante aqui teve. O seguinte corrigiu. Entendo que
init
era um contrato único, mas você provavelmente precisará executarup
sempre que iniciar o Docker:Então, quando
up
executado, ele fornece váriosexport
comandos. Copie e cole e execute-os.Finalmente
docker info
, você deve dizer que está instalado corretamente.Para demonstração
O restante dos comandos deve demonstrá-lo. (no Ubuntu linux eu exigi o sudo.)
Então você deve estar em um shell raiz no contêiner:
Voltar para o bash de usuário nativo:
Procure o identificador hexadecimal de cerca de 12 dígitos (0-9 ou af) em "ID do contêiner", por exemplo
456789abcdef
. Você pode confirmar sua alteração e nomeá-la com um nome descritivo, comodescriptivename
:fonte
Tudo o que você precisa para executar o Docker no Linux Ubuntu / Mint:
Opcionalmente, pode ser necessário instalar duas dependências adicionais se o acima não funcionar:
fonte
sudo service docker start
resolvi o problema no meu Ubuntu 14.04.Tentei as soluções aqui e o boot2docker não funcionou.
Minha solução: Desinstale o boot2docker no Mac, instale uma VM do Centos 7 no VirtualBox e trabalhe com o Docker dentro dessa VM.
fonte
Para mim, os seguintes passos funcionaram:
docker run hello-world
falha com esse erro como a pergunta, mas a execuçãosudo docker run hello-world
funcionou.docker
gruposudo adduser user docker
,. Então você deve reiniciar sua máquina ou usarsu - user
(verifique usando ogroups
comando se estiver nodocker
grupo).Depois disso,
hello-world
começou a trabalhar.Minha resposta é baseada em Como posso usar o docker sem o sudo? o que explica o que deu errado.
fonte
Pelo que vale a pena, tentei todas as soluções nesta questão e nesta questão relacionada e nenhuma resolveu meu problema até desinstalar e reinstalar o VirtualBox . Esse processo atualizou o VirtualBox da versão 4.2.16 para 4.3.22 (o meu anterior estava sem uso no sistema há alguns meses).
Então
boot2docker
edocker
trabalhou sem outros ajustes.fonte
Eu tive o mesmo problema. Um simples
service docker restart
resolveu o problema.fonte
O daemon do Docker se liga a um soquete Unix em vez de uma porta TCP. Por padrão, o soquete Unix pertence à raiz do usuário e outros usuários podem acessá-lo apenas usando o sudo. O daemon do Docker sempre é executado como usuário root.
Efetue logout e logon novamente, para que sua participação no grupo seja reavaliada.
Origem: gerenciar o Docker como um usuário não raiz
fonte
Eu tive o mesmo problema e tentei várias coisas para corrigir isso, alterando o arquivo .bash_profile, entrando e saindo, sem qualquer sorte. No final, reiniciar minha máquina corrigiu.
fonte
Verifique se há
na tua
Arquivo.
fonte
Eu enfrentei o mesmo problema ao criar imagens do Docker a partir de Jenkins. Basta adicionar o usuário ao
docker
grupo e reiniciar os serviços do Docker e, no meu caso, tive que reiniciar os serviços do Jenkins.Este foi o erro que recebi:
fonte
Outro motivo possível é que a visualização da CPU do BIOS não está ativada. Vá e ative-o primeiro!
fonte