Docker VM no OS X instalado, mas os comandos parecem falhar

Estou configurando o Docker na minha máquina Mac OS X local e estou tendo alguns problemas para fazê-lo funcionar. Eu segui as instruções de instalação em https://docs.docker.com/installation/mac/. Tudo até a instalação da ferramenta boot2docker parece correr bem, mas depois que a VM está em execução, os comandos do Docker parecem não fazer nada. Por exemplo.,

$ docker run ubuntu echo hello world2014/06/17 08:20:54 Post http://localhost:4243/v1.12/containers/create: EOF

Cada comando termina em EOF e não parece fazer o que realmente deve fazer. Aqui está outro:

$ docker ps2014/06/17 08:25:10 Get http://localhost:4243/v1.12/containers/json: EOF

A VM criada pela ferramenta boot2docker também está em execução:

$ boot2docker status[2014-06-17 08:26:24] boot2docker-vm is running.

Tenho a sensação de que algo não está configurado corretamente, mas segui as instruções linha a linha e não consigo ver onde algo está dando errado.

Qualquer ajuda é muito apreciada, obrigado!

Atualização 1

boot2docker Versão: 1.0.0 ou 0.9.1 (Não tenho certeza--não há nenhuma bandeira versão AFAICT)

$ boot2docker ipUsage /usr/local/bin/boot2docker {init|start|up|save|pause|stop|restart|status|info|delete|ssh|download}

Na instância boot2docker:

$ sudo netstat -ntpl | grep dockertcp        0      0 :::2375                 :::*                    LISTEN      743/docker$ docker --versionDocker version 1.0.0, build 63fe64c

Atualização 2

Acabei de reinstalar o boot2docker e agora estou definitivamente executando 1.0.0.

$ boot2docker versionClient version: v1.0.0Git commit: 2fef7b2

Eu também re-executei o comando na documentação (que entra em conflito com o que o comando me disse para definir o DOCKER_HOST na linha de comando, veja abaixo):

$ boot2docker up2014/06/17 18:25:43 Waiting for VM to be started................................2014/06/17 18:26:41 Started.2014/06/17 18:26:41 Auto detection of the VM's IP address.2014/06/17 18:26:41 To connect the Docker client to the Docker daemon, please set:2014/06/17 18:26:41     export DOCKER_HOST=tcp://:4243

Mas ainda estou vendo o problema original.

$ docker run ubuntu echo hello world2014/06/17 18:28:29 Post http://127.0.0.1:4243/v1.12/containers/create: EOF

Em seguida, executo novamente o comando mencionado na documentação:

$ export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375

E Agora Veja isso:

$ docker run ubuntu echo hello world2014/06/17 18:31:39 Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

Devo mencionar que tentar correr docker -d no OS X dispara esta mensagem:

$ docker -d2014/06/17 18:34:04 The Docker daemon is only supported on linux

O que não ajuda muito...

Algumas coisas para verificar:

Versão atualizada do boot2docker

Verifique se o boot2docker está atualizado. Se você tivesse instalado por meio de um aplicativo como o Homebrew, talvez esteja executando uma versão mais antiga. Verifique os lançamentos oficiais em https://github.com/boot2docker/osx-installer/releases. Certifique-se de correr boot2docker delete e depois boot2docker init após a atualização.

Cliente Docker atualizado

Provavelmente é uma boa ideia executar um cliente Docker que corresponda à versão do servidor em execução no boot2docker. Se você estiver executando o Docker 1.0 no boot2docker, certifique-se de ter o cliente 1.0 de https://github.com/boot2docker/osx-installer/releases.

Exportar porta correta

A porta em seus comandos pode não estar correta. Você se lembra de correr export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375 como diz a documentação? Porta 2375 é o novo padrão para Docker 1.0(que está em boot2docker 0.9.1 e 1.0.0).

Porta correta para a frente

Depois de atualizar o DOCKER_HOST para o cliente, você pode encontrar um problema com boot2docker 0.9.1 que usou a porta errada para conexões TCP do Docker. Passos para verificar:

  1. Faça Login na VM boot2docker usando boot2docker ssh (senha é tcuser).
  2. Em seguida, verifique a porta de escuta usando sudo netstat -ntpl | grep docker (provavelmente 2375).
  3. Agora abra o VirtualBox, vá para as configurações da VM boot2docker e clique no Port Forwarding botao.
  4. Deve corresponder à escuta da porta no boot2docker (possivelmente 2375).
  5. Se a porta não corresponder, tente atualizar o encaminhamento de porta e tente o cliente novamente.

O Andy arranjou-me 99% do caminho. Estou marcando a resposta dele como a resposta aceita, mas vou escrever aqui o que resolveu meu problema. Depois de instalar a versão correta (1.0.0) do boot2docker, eu ainda estava recebendo saída incorreta de qualquer comando Docker.

Em seguida, abri o VirtualBox e li As Portas E, eis que, as portas estavam incorretas. No entanto, trocá-los para os valores corretos não corrigiu o problema.

Decidi redefinir a VM, já que o boot2docker antigo provavelmente a configurou incorretamente. Os seguintes comandos acabaram corrigindo o problema.

$ boot2docker delete$ boot2docker init$ export DOCKER_HOST=tcp://:2375

Por que isso é off topic? Parece-me uma pergunta perfeitamente válida. Tive problemas semelhantes.

Não percebi. Mas eu acho que quando eles dizem “profissional” eles significam mais problemas de" Sistema de produção". Como você pergunta sobre como executar contêineres em um Mac, eles devem assumir que este é um ambiente de desenvolvimento. A questão pode ter sido melhor para o Stack Overflow. Eu sempre tive a impressão de que a falha do Servidor ERA para perguntas relacionadas ao servidor e ao daemon, onde o Stack Overflow era mais baseado em código. Mas acho que minhas suposições estavam um pouco erradas.

Você pode fornecer um pouco mais de informações de depuração? boot2docker versão, pelo menos? Talvez também SSH para a VM boot2docker e obtenha a saída ‘docker-version’? Suspeito que este seja um problema de encaminhamento de porta da VM com o boot2docker mais recente que foi atualizado para o Docker 1.0, que usa uma nova porta.

Também parece que a porta do cliente está errada (pelo menos para o Docker 1.0). Eu criei uma resposta com dois possíveis problemas que podem estar acontecendo.

@ AndyShinn aparentemente, fazer uma pergunta sobre um “ambiente de desenvolvimento” é motivo de fechamento. Acho que é preciso se perguntar *onde * pode-se fazer perguntas como essas sem ser fechado…