Аутентифицироваться в Container Registry

Перед тем как начать работу с Container Registry через Docker CLI, необходимо пройти аутентификацию.

Примечание

Необходима роль на каталог — viewer. Подробнее про роли читайте в разделе Управление доступом.

Вы можете аутентифицироваться как пользователь или как сервисный аккаунт. Ознакомьтесь со способами аутентификации и выберите подходящий.

Способы аутентификации

Вы можете аутентифицироваться:

Команда для аутентификации выглядит следующим образом:

$ docker login \
         --username <тип токена> \
         --password <токен> \
         cr.yandex
  • В параметр username передается тип токена <тип токена>. Допустимые значения: oauth, iam или json_key.
  • В параметр password передается сам токен.
  • После всех параметров указывается адрес для аутентификации cr.yandex. Если его не указать запрос пойдет в сервис по умолчанию — Docker Hub.

Аутентифицироваться как пользователь

Аутентификация с помощью OAuth-токена

Примечание

Срок жизни OAuth-токена 1 год. После этого необходимо получить новый OAuth-токен и повторить процедуру аутентификации.

  1. Если у вас еще нет OAuth-токена, получите его по ссылке.

  2. Выполните команду:

    $ docker login \
             --username oauth \
             --password <OAuth-токен> \
             cr.yandex
    

Аутентификация с помощью IAM-токена

Примечание

У IAM-токена короткое время жизни — не больше 12 часов. Поэтому такой способ подойдет для приложений, которые будут запрашивать IAM-токен автоматически.

  1. Получите IAM-токен.

  2. Выполните команду:

    $ docker login \
             --username iam \
             --password <IAM-токен> \
             cr.yandex
    

Аутентифицироваться как сервисный аккаунт

Аутентификация с помощью авторизованных ключей

Примечание

Срок жизни авторизованных ключей неограничен, но вы всегда можете получить новые авторизованные ключи и повторить процедуру аутентификации, если что-то пошло не так.

Используя сервисный аккаунт, ваши программы могут получать доступ к ресурсам Яндекс.Облака. Получите файл с авторизованными ключами для вашего сервисного аккаунта, используя CLI.

  1. Получите авторизованные ключи для вашего сервисного аккаунта:

    $ yc iam key create --service-account-name default-sa -o key.json
    id: aje8a87g4e...
    service_account_id: aje3932acd...
    created_at: "2019-05-31T16:56:47Z"
    key_algorithm: RSA_2048
    
  2. Выполните команду:

    $ cat key.json | docker login \
    --username json_key \
    --password-stdin \
    cr.yandex
    
    Login Succeeded
    
    • Команда cat key.json записывает содержимое файла с ключом в поток вывода.
    • Флаг --password-stdin позволяет читать пароль из потока ввода.

Аутентификация с помощью IAM-токена

Примечание

У IAM-токена короткое время жизни — не больше 12 часов. Поэтому такой способ подойдет для приложений, которые будут запрашивать IAM-токен автоматически.

  1. Получите IAM-токен.

  2. Выполните команду:

    $ docker login \
             --username iam \
             --password <IAM-токен> \
             cr.yandex
    

Аутентифицироваться с помощью Docker Credential helper

Docker Engine может хранить учетные данные пользователя во внешнем хранилище. Это более безопасно, чем хранить их в конфигурационном файле Docker. Чтобы использовать хранилище учетных данных, необходима внешняя программа — Docker Credential helper.

В роли Docker Credential helper для Яндекс.Облака выступает программа docker-credential-yc. Она хранит учетные данные пользователя и позволяет работать с приватными реестрами Яндекс.Облака, не выполняя команду docker login. Этот способ аутентификации поддерживает использование от имени пользователя и от имени сервисного аккаунта. Для работы с docker-credential-yc вам понадобится интерфейс командной строки Облака: YC CLI.

Настройка Credential helper

Важная информация

Устанавливать docker-credential-yc отдельно не требуется, достаточно установить YC CLI и сконфигурировать Credential helper, как описано ниже.

  1. Если у вас еще нет профиля для YC CLI, создайте его.

  2. Сконфигурируйте Docker для использования docker-credential-yc:

    $ yc container registry configure-docker
    Credential helper is configured in '/home/<user>/.docker/config.json'
    

    При конфигурации сохраняется информация о текущем профиле пользователя.

  3. Проверьте, что Docker сконфигурирован.

    В конфигурационном файле /home/<user>/.docker/config.json должна появиться строка:

    "cr.yandex": "yc"
    
  4. Docker готов к использованию, например, для загрузки Docker-образов. При этом выполнять командуdocker login не надо.

Дополнительные опции Credential helper

Использовать Credential helper для другого профиля YC CLI

Вы можете использовать Credential helper для другого профиля, не переключая текущий, с помощью команды:

$ yc container registry configure-docker --profile <имя профиля>

Подробнее об управлении профилями YC CLI читайте в пошаговых инструкциях.

Не использовать Credential helper

Чтобы не использовать Credential helper при аутентификации, удалите в конфигурационном файле /home/<user>/.docker/config.json из блока credHelpers строку домена cr.yandex.