docker-in-docker ` ' não é possível conectar-se ao daemon Docker em tcp: / / docker: 2375`

Estou tentando usar manualmente o docker:19.03.5-dind imagem como mostrado pela seção" Como usar esta imagem".

  • Primeiro estou executando o daemon

    $ docker run --privileged -d --rm --name=docker-daemon \             --network=test  docker:19.03.5-dinde1f8544d30df5bc010d67e38b38be0f47306b29ab0fdeb32861c5716582c9917
  • Vejo que está em alta e ouve na porta 2376

    $ docker logs docker-daemon...time="2019-11-28T11:31:40.266976728Z" level=info msg="Daemon has completed initialization"time="2019-11-28T11:31:40.550083421Z" level=info msg="API listen on [::]:2376"time="2019-11-28T11:31:40.550169911Z" level=info msg="API listen on /var/run/docker.sock"
  • Em seguida, trago o cliente docker:

    $ docker run -it --rm --name=my-docker \      --network=test --link=docker-daemon:docker docker:19.03.5
  • Do cliente eu posso ping o docker-daemon e sua encaixe restante

    # ping docker-daemon -c1PING docker-daemon (172.20.0.2): 56 data bytes64 bytes from 172.20.0.2: seq=0 ttl=64 time=0.146 ms...# ping docker -c1PING docker (172.20.0.2): 56 data bytes64 bytes from 172.20.0.2: seq=0 ttl=64 time=0.177 ms...
  • Mas ainda não consigo executar o docker:

    # docker psCannot connect to the Docker daemon at tcp://docker:2375. Is the docker daemon running?

Não deveria tentar se conectar na porta 2376? O que estou perdendo aqui?


Meu host executando o Ubuntu 18.04 com Docker versão 18.09.7, construir 2d0083d

Você precisa seguir as etapas da documentação vinculada que incluem a montagem do Diretório de certificados como um volume em ambos os contêineres e a passagem da variável env no contêiner do cliente:

$ docker run --privileged --name some-docker -d \    --network some-network --network-alias docker \    -e DOCKER_TLS_CERTDIR=/certs \    -v some-docker-certs-ca:/certs/ca \    -v some-docker-certs-client:/certs/client \    docker:dind$ docker run --rm --network some-network \    -e DOCKER_TLS_CERTDIR=/certs \    -v some-docker-certs-client:/certs/client:ro \    docker:latest version

A primeira imagem preenche a montagem de volume e a segunda imagem usa esses certificados para se comunicar em 2376. Sem os certificados, ele está tentando se conectar à porta 2375 não criptografada que não está ativada por padrão nas imagens 19.03 dind.