Empujar al registro local de docker da un error de restablecimiento de conexión

Estoy tratando de crear un registro privado de Docker siguiendo esta guía. Descargué y etiqueté una imagen de Ubuntu y creé un contenedor de registro y ahora tengo la intención de enviarlo a mi registro, pero cuando llamo sudo docker push localhost:6000/Ubuntu Obtengo el siguiente resultado:

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

Todo lo que he podido encontrar es que el error "no se puede escribir la solicitud HTTP" es un error Go, pero desafortunadamente no he podido encontrar nada relacionado con cómo puedo resolverlo en Docker. También he intentado encontrar registros para los comandos de Docker para poder intentar obtener más detalles sobre el problema, pero parece que los registros solo están disponibles para contenedores, y no estoy ejecutando esto en un contenedor.

¿Cómo puedo resolver este error?

ACTUALIZAR

Simplemente ejecuté el comando nuevamente después de no cambiar nada y obtuve un error diferente:

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

ACTUALIZACIÓN2

Y de nuevo, lo ejecuté después de no cambiar nada y ahora estoy obteniendo:

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

ACTUALIZACIÓN3

Después de jugar un poco, descubrí que la imagen que intenté insertar en mi registro aparece en mi lista de imágenes de docker, pero parece que no puedo extraerla.

UPDATE4

Después de jugar un poco más, parece que el puerto que asigné a mi registro privado solo escucha en IPV6, en lugar de IPV4. De acuerdo con este hilo de git, es normal que docker parezca que solo está escuchando en IPV6, pero después de ejecutar telnet localhost, netstat -ntlp, y iptables -t nat -nxvL, Todavía no veo ninguna indicación de que algo esté escuchando en 127.0.0.1:6000, que es el puerto al que se debe asignar mi registro (que solo se ejecuta como un contenedor). En cambio, parece estar escuchando en::: 1: 6000.

Además, porque se solicitó y porque debería haberlo enumerado independientemente:

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 del contenedor de 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

Registros de depuración de Docker daemon cuando intento insertar una imagen en mi 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

Los registros del registro terminan diciendo que se produjo un error, pero del resto del registro no puedo discernir cuál fue ese error. Incluso dividí el registro en stdout y stderr y no había nada en stderr.

Además, he confirmado que el registro está escuchando en ipv4. Ejecutar nc -l -4 6000 devoluciones Address already in use. Al menos, creo que lo he confirmado. Las direcciones ipv4 aún no se mostrarán con netstat.

UPDATE6

Especificó explícitamente un puerto ipv4 con docker run -d -p 127.0.0.1:8000:8000, este puerto aparece como escucha en netstat. Sigo recibiendo los mismos errores. Sin embargo, los registros de Docker son un poco 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

El mensaje "redis no configurado" es lo único que parece ser un problema. Voy a investigarlo. Realmente, realmente apreciaría cualquier información adicional.

Estoy escribiendo esto porque pasé horas en esto antes de finalmente descifrarlo.

Mi situación: Estoy ejecutando una versión 17 de docker en Fedora 25 e intentaba ejecutar un registro usando un archivo de configuración personalizado y obtenía el mismo mensaje de restablecimiento de pares que el anterior. Parecía que esto estaba sucediendo debido a que se restablecía la conexión HTTP insegura y, por lo tanto, encontré personas que me decían que agregara el DOCKER_OPTS="--insecure-registry localhost:6000 127.0.0.1:6000" opción en el /etc/sysconfig/docker y /etc/default/docker archivo y reinicie el servicio Docker. Sin embargo, esto no solucionó el problema .Aqui es la documentación oficial al respecto).

Lo que finalmente hizo el truco fue ejecutar un registro usando una imagen de docker compose. Seguí los pasos dados en el guía de digitalocean, que básicamente lo guía a través del uso de docker-compose para configurar un registro y luego usar nginx para configurar SSL , lo que funcionaría si se hace en sus servidores locales.

Sin embargo, resulta que todo lo que necesitaba hacer era el paso 2, es decir, configurar el docker-compose.yml como se indica y comenzar un registro, y listo! el empuje ahora funciona.

Resuelto el problema:

Tuve que correr con docker run -d -p 127.0.0.1:6000:5000. No usar localhost aseguró que se usara ipv4 (estoy bastante seguro de que se usó de otra manera, pero al menos ahora aparece en netstat) y los contenedores escuchan en su puerto 5000, por lo que no funcionó de otra manera.

Oye, ¿esto está resuelto? ¿Cuál es el último error que está recibiendo?
También puede publicar las versiones de docker, registro, etc. Está ejecutando el registro como un contenedor de docker (o cómo se está ejecutando su registro?)

@Maniankara he actualizado la pregunta

Revise los registros de su registro. Probablemente se haya perdido algo importante mientras estaba distraído por el no problema de IPv6.

@MichaelHampton lo hará. Publicaré los resultados en un momento.