Empurrar para o registro docker local dá erro de redefinição de conexão

Estou tentando criar um registro Docker privado seguindo guia. Eu baixei e etiquetei uma imagem do Ubuntu e criei um contêiner de registro e agora pretendo empurrá - la para o meu registro, mas quando eu chamo sudo docker push localhost:6000/Ubuntu Eu recebo a seguinte saída:

The push refers to a repository [localhost:6000/ubuntu]Put http://localhost:6000/v1/repositories/ubuntu/: http: can't write HTTP request on broken connection

Tudo o que consegui encontrar é que o erro "não é possível escrever uma solicitação HTTP" é um erro Go, mas infelizmente não consegui encontrar nada relacionado a como posso resolvê-lo no Docker. Também tentei encontrar logs para comandos Docker para tentar obter mais detalhes sobre o problema, mas parece que os logs estão disponíveis apenas para contêineres e não estou executando isso em um contêiner.

Como posso resolver esse erro?

ACTUALIZACAO

Acabei de executar o comando novamente depois de não alterar nada e recebi um erro diferente:

Put http://localhost:6000/v1/repositories/ubuntu/: read tcp [::1]:33417->[::1]:6000: read: connection reset by peer

UPDATE2

E novamente, correu depois de não mudar nada e agora estou recebendo:

Put http://localhost:6000/v1/repositories/ubuntu/: EOF

UPDATE3

Depois de mexer um pouco, descobri que a imagem que tentei enviar para o meu registro aparece na minha lista de imagens do docker, mas não consigo puxá-la.

UPDATE4

Depois de mexer um pouco mais, parece que a porta que atribuí ao meu registro privado está apenas ouvindo no IPV6, em vez do IPV4. Segundar presente git thread, é normal que o docker pareça estar apenas ouvindo no IPV6, mas depois de executar telnet localhost, netstat -ntlp, e iptables -t nat -nxvL, Ainda não vejo nenhuma indicação de que algo esteja ouvindo em 127.0.0.1:6000, que é a porta à qual meu registro (que está sendo executado apenas como um contêiner) deve ser atribuído. Em vez disso, parece estar ouvindo::: 1: 6000.

Além disso, porque foi solicitado e porque eu deveria tê-lo listado independentemente:

user@devstack01:~$ sudo docker versionClient: Version:      1.10.3 API version:  1.22 Go version:   go1.5.3 Git commit:   20f81dd Built:        Thu Mar 10 15:54:52 2016 OS/Arch:      linux/amd64Server: Version:      1.10.3 API version:  1.22 Go version:   go1.5.3 Git commit:   20f81dd Built:        Thu Mar 10 15:54:52 2016 OS/Arch:      linux/amd64

UPDATE5

registros do contêiner do registro:

time="2016-04-04T18:34:22Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-04T18:34:22Z" level=info msg="redis not configured" go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-04T18:34:22Z" level=info msg="Starting upload purge in 58m0s" go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-04T18:34:22Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-04T18:34:22Z" level=info msg="listening on [::]:5000" go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-04T19:32:22Z" level=info msg="PurgeUploads starting: olderThan=2016-03-28 19:32:22.890256531 +0000 UTC, actuallyDelete=true"time="2016-04-04T19:32:22Z" level=info msg="Purge uploads finished.  Num deleted=0, num errors=1"time="2016-04-04T19:32:22Z" level=info msg="Starting upload purge in 24h0m0s" go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-05T13:54:59Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1time="2016-04-05T13:54:59Z" level=info msg="redis not configured" go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1time="2016-04-05T13:54:59Z" level=info msg="Starting upload purge in 59m0s" go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1time="2016-04-05T13:54:59Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1time="2016-04-05T13:54:59Z" level=info msg="listening on [::]:5000" go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1time="2016-04-05T14:53:59Z" level=info msg="PurgeUploads starting: olderThan=2016-03-29 14:53:59.133142744 +0000 UTC, actuallyDelete=true"time="2016-04-05T14:53:59Z" level=info msg="Purge uploads finished.  Num deleted=0, num errors=1"time="2016-04-05T14:53:59Z" level=info msg="Starting upload purge in 24h0m0s" go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1

Os logs de depuração do Docker daemon quando tento enviar uma imagem para o meu registro:

DEBU[0037] Calling POST /v1.22/images/localhost:6000/hello-world/pushDEBU[0037] POST /v1.22/images/localhost:6000/hello-world/push?tag=DEBU[0037] Trying to push localhost:6000/hello-world to https://localhost:6000 v2DEBU[0037] Error getting v2 registry: Get https://localhost:6000/v2/: read tcp [::1]:33560->[::1]:6000: read: connection reset by peerDEBU[0037] Trying to push localhost:6000/hello-world to http://localhost:6000 v2DEBU[0037] Error getting v2 registry: Get http://localhost:6000/v2/: read tcp [::1]:33562->[::1]:6000: read: connection reset by peerDEBU[0037] Trying to push localhost:6000/hello-world to https://localhost:6000 v1DEBU[0037] attempting v2 ping for registry endpoint https://localhost:6000/v2/DEBU[0037] attempting v1 ping for registry endpoint https://localhost:6000/v1/DEBU[0037] Trying to push localhost:6000/hello-world to http://localhost:6000 v1DEBU[0037] Image list: [0xc820aa3840 0xc820704500]DEBU[0037] Tags by image: map[sha256:690ed74de00f99a7d00a98a5ad855ac4febd66412be132438f9b8dbd300a937d:[latest]]DEBU[0037] Pushing ID: b652ec3a27e758f30de4742156b5d096bb19c82f2dc836e96e430323ba166ffe with Tag:DEBU[0037] Pushing ID: 690ed74de00f99a7d00a98a5ad855ac4febd66412be132438f9b8dbd300a937d with Tag: latestDEBU[0037] [registry] PUT http://localhost:6000/v1/repositories/hello-world/DEBU[0037] Image list pushed to index:[{"id":"b652ec3a27e758f30de4742156b5d096bb19c82f2dc836e96e430323ba166ffe"},{"id":"690ed74de00f99a7d00a98a5ad855ac4febd66412be132438f9b8dbd300a937d","Tag":"latest"}]DEBU[0037] Not continuing with error: Put http://localhost:6000/v1/repositories/hello-world/: EOF

Os logs do registro terminam dizendo que ocorreu um erro, mas do resto do log não consigo realmente discernir qual foi esse erro. Eu até dividi o log em stdout e stderr e nada estava em stderr.

Além disso, confirmei que o registro está ouvindo no ipv4. Execucao nc -l -4 6000 devolucao Address already in use. Pelo menos, acho que o confirmei. Os endereços ipv4 ainda não aparecerão com netstat.

UPDATE6

Especificou explicitamente uma porta ipv4 com docker run -d -p 127.0.0.1:8000:8000, esta porta aparece como escuta no netstat. Ainda recebendo os mesmos erros. Os logs do Docker são um pouco diferentes:

time="2016-04-07T15:19:31Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1time="2016-04-07T15:19:31Z" level=info msg="redis not configured" go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1time="2016-04-07T15:19:31Z" level=info msg="Starting upload purge in 1m0s" go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1time="2016-04-07T15:19:31Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1time="2016-04-07T15:19:31Z" level=info msg="listening on [::]:5000" go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1time="2016-04-07T15:20:31Z" level=info msg="PurgeUploads starting: olderThan=2016-03-31 15:20:31.061864096 +0000 UTC, actuallyDelete=true"time="2016-04-07T15:20:31Z" level=info msg="Purge uploads finished.  Num deleted=0, num errors=1"time="2016-04-07T15:20:31Z" level=info msg="Starting upload purge in 24h0m0s" go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1

A mensagem" redis not configured " é a única coisa que parece que pode ser um problema. Vai olhar para ele. Realmente, realmente apreciaria qualquer visão adicional.

Estou escrevendo isso porque passei horas nisso antes de finalmente decifrá-lo.

Minha situação: estou executando um docker versão 17 no Fedora 25 e estava tentando executar um registro usando um arquivo de configuração personalizado e recebendo a mesma mensagem de redefinição de pares acima. Parecia que isso estava acontecendo devido à conexão HTTP insegura sendo redefinida e, portanto, encontrei pessoas me dizendo para adicionar o DOCKER_OPTS="--insecure-registry localhost:6000 127.0.0.1:6000" opção no /etc/sysconfig/docker e /etc/default/docker arquivo e reinicie o serviço docker. Isso não corrigiu o problema, no entanto (Aqui é a documentação oficial sobre isso).

O que finalmente fez o truque foi executar um registro usando uma imagem Docker compose. Eu segui os passos dados no guia digitalocean, que basicamente o orienta usando docker-compose para configurar um registro e , em seguida, usando nginx para configurar SSL, o que faria o truque se feito em seus servidores locais.

No entanto, acontece que tudo o que eu precisava fazer era o Passo 2, ou seja, configurar o docker-compose.yml como dado e iniciar um registro, e voila! o empurrão agora funciona.

Resolvido o problema:

Teve que correr com docker run -d -p 127.0.0.1:6000:5000. Não usar localhost garantiu que o ipv4 fosse usado (tenho certeza de que foi usado de outra forma, mas pelo menos agora aparece no netstat) e os contêineres ouvem em sua porta 5000, então não funcionou de outra forma.

Isto está resolvido? Qual é o erro mais recente que você está recebendo?
Você também pode postar as versões do docker, registro etc. Você está executando o registro como um contêiner do docker (ou como seu registro está sendo executado?)

@ Maniankara eu atualizei a pergunta

Verifique os logs do seu registro. Você provavelmente perdeu algo importante enquanto estava distraído com o não problema do IPv6.

@ MichaelHampton vai fazer . Vou postar os resultados em um momento.