#docker #gitlab #amazon-ecr
#docker #gitlab #amazon-ecr
Вопрос:
У меня есть реестр gitlab runner с docker machine
исполнителем, и я настроил свой `.gitlab-ci.yml’, как показано ниже:
stages:
- RUN_TESTS
- CLEAN
image:
name: <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<NAMESPACE>:<TAG>
И изображение <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<NAMESPACE>:<TAG>
является частным AWS
репозиторием ECR. И это каждый раз терпит неудачу, поскольку это частный репозиторий.
Как я могу настроить это для извлечения этого частного образа?
Я получил пароль ecr с помощью aws ecr get-login-password --region us-east-2
команды, и он дал пароль.
Я изучил этот docker-credential-ecr-login
инструмент и установил его в экземпляре runner. И я настроил учетные данные AWS, используя aws configure
и учетные данные теперь находятся в ~/.aws/credentials
А также добавьте следующий блок ~/.docker/config.json
, как показано ниже:
"credHelpers": {
"<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login"
}
Но когда я пытаюсь docker pull <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<NAMESPACE>:<TAG>
, это выдает следующую ошибку:
Ответ об ошибке от демона: Получить https://Account-ID.dkr.ecr.REGION.amazonaws.com/v2/spot-runner-image/manifests/latest : нет базовых учетных данных для авторизации
Есть ли какое-либо отношение к docker-credential-ecr-login
Ответ №1:
Вы получаете эту ошибку, потому что ваш runner (и / или задание) не проходит проверку подлинности в реестре ECR, прежде чем он попытается извлечь изображение. Вам нужно будет предоставить данные аутентификации в одной из следующих форм:
$DOCKER_AUTH_CONFIG
переменная в задании (см. Документы для получения дополнительной информации: https://docs.gitlab.com/ee/ci/variables/README.html#create-a-custom-variable-in-gitlab-ciyml )- переменная
$DOCKER_AUTH_CONFIG
проекта из настроек вашего проекта -> Страница CI / CD (см. Документы здесь: https://docs.gitlab.com/ee/ci/variables/#create-a-custom-variable-in-the-ui ) $DOCKER_AUTH_CONFIG
переменная в вашемconfig.toml
файле runners (https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#configuring-a-runner )
Документы по настройке DOCKER_AUTH_CONFIG
находятся здесь: https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#define-an-image-from-a-private-container-registry.
Чтобы определить, что должно быть в DOCKER_AUTH_CONFIG
переменной, вы можете войти в свой реестр со своего локального компьютера с docker login example-registry.example.com --username my_user --password my_password
помощью . Это создаст config.json
файл в ~/.docker
каталоге. Однако на моем mac учетные данные хранятся в моей цепочке ключей, а файл config.json не может быть использован Gitlab. В этом случае вам придется создавать содержимое вручную. Вся эта информация и многое другое содержится в документах: https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#determining-your-docker_auth_config-data