¿Cuál es el contenido de X-Registry-Auth para Docker push para logging privado

¿Cuál debería ser el contenido del encabezado X-Registry-Auth cuando se empuja una image Docker a un logging privado usando la API REST ? Por usar Docker API para enviar al logging privado , se requiere un encabezado X-Registry-Auth. https://groups.google.com/forum/#!topic/docker-user/vXcA8fsCNZM sugiere que el valor debe ser una cadena JSON codificada en base64 del formulario:

{'username': string, 'password': string, 'email': string, 'serveraddress' : string} 

Después de establecer variables de entorno adecuadas, lo hice:

 XRA=`echo "{\"username\": \"${USERNAME}\", \"password\": \"${PASSWORD}\", \"email\": \"${EMAIL_ADDRESS}\", \"serveraddress\" : \"${SERVER_ADDRESS}\"}" | base64 --wrap=0` curl -v --request POST --header "X-Registry-Auth: $XRA" http://$DOCKER_HOST/v1/images/$REGISTRY/$NAMESPACE/$REPOSITORY?tag=$TAG 

Y obtén una respuesta 403 Forbidden .

Quizás el problema es que no sé cuáles deberían ser los valores. ¿Cómo puedo determinarlos? Docker parece tener una manera; sudo docker push $REGISTRY/$NAMESPACE/$REPOSITORY:$TAG funciona bien.

Creo que te faltan dos capas en tu encoding. El código real que genera el encabezado (desde github )

 def encode_header(auth): auth_json = json.dumps(auth).encode('ascii') return base64.b64encode(auth_json) def encode_full_header(auth): """ Returns the given auth block encoded for the X-Registry-Config header. """ return encode_header({'configs': auth}) 

Entonces necesitas un map externo de {'configs': [array of auth entries]}, todo json-then-base64 codificado.

Para verificar su problema de variables de entorno de authentication

 docker login --username $USERNAME --password $PASSWORD --email $EMAIL_ADDRESS $SERVER_ADDRESS 

Si son correctos, verá "Iniciar session exitosa".

Sospecho que $ NAMESPACE debe coincidir con $ USERNAME. Intenta usar v1.13 como la versión en lugar de v1.

Tenía un repository nexus docker privado (Docker Api v2), y para mí, esa era la solución:

  XRA=`echo "{ \"username\": \"yourname\", \"password\": \"yourpass\", \"email\": \"youmail@example.org\" }" | base64 --wrap=0` curl -X POST -d "" -H "X-Registry-Auth: $XRA" http://localhost:4243/images/create?fromImage=private.host:19003/imageame&tag=latest