2

Я следовал this post, чтобы попытаться скачать Docker изображение с АМС ККМ, но я получаю следующие ошибки:Прицепные докер изображение с AWS ECR с помощью удаленного API

Если я делаю:

#!/bin/sh 

repository="2xxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/nexus-pro" 
tag="2.13.0-np-1.0" 

ecr_token=$(aws ecr get-authorization-token --output text --query authorizationData[].authorizationToken | cut -d: -f2) 

docker_login=$(echo "{\"username\":\"AWS\",\"password\":\"${ecr_token}\", \"auth\":\"\",\"email\":\"none\"}" | base64) 

curl -X POST -d "" -H "X-Registry-Auth: ${docker_login}" http://${ip_address}:4243/images/create?fromImage=${repository}&tag=${tag_source} 

Тогда я получите следующую ошибку:

$ error parsing HTTP 403 response body: invalid character 'Y' looking for beginning of value: "Your Authorization Token has expired. Please run 'aws ecr get-login' to fetch a new one." 

Хотя я просто «запросил» токен.

И если я это сделать:

#!/bin/sh 

repository="2xxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/nexus-pro" 
tag="2.13.0-np-1.0" 

ecr_token=$(aws ecr get-login | awk '{print ($6)}') 

docker_login=$(echo "{\"username\":\"AWS\",\"password\":\"${ecr_token}\", \"auth\":\"\",\"email\":\"none\"}" | base64) 

curl -X POST -d "" -H "X-Registry-Auth: ${docker_login}" http://${ip_address}:4243/images/create?fromImage=${repository}&tag=${tag_source} 

Я получаю следующее сообщение об ошибке:

$ error parsing HTTP 404 response body: invalid character 'p' after top-level value: "404 page not found\n" 

Изображения на КОМ и я могу вытащить его, если я делаю docker login ... и затем docker pull 2xxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/nexus-pro:2.13.0-np-1.0

Я не уверен, что я делаю неправильно здесь. Любая помощь очень ценится!

ответ

1

Базовая аутентификация поддерживается только через HTTPS. Клиент-докер не будет отправлять базовые заголовки auth при нажатии/вытягивании реестра по HTTP. Это делается по дизайну, чтобы люди не отправляли свои учетные данные по небезопасным каналам. Использование SSL должно избавиться от проблемы.

Попробуйте использовать ниже:

https://${ip_address}:4243/images/create?fromImage=${repository}&tag=${tag_source} 

Или включить сертификат SSL для экземпляра, из которого вы тянете изображение. Это может помочь вам. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/SSL-on-an-instance.html

+0

Хм, я получаю эту ошибку прямо сейчас: 'локон: (35) Ошибка: 140770FC: SSL процедуры: SSL23_GET_SERVER_HELLO: неизвестно protocol' – Fadi

+0

Используйте этот https://registry.hub.docker.com вместо https: // $ {ip_address} – error2007s

+0

'$ {ip_address}' - это экземпляр, в котором установлен Docker Engine. Это _not_ реестр .. – Fadi