Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Решения
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Container Registry
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Аутентифицироваться в Container Registry
    • Управление Docker-образом
      • Получить информацию об имеющихся Docker-образах
      • Создать Docker-образ
      • Загрузить Docker-образ в реестр
      • Скачать Docker-образ из реестра
      • Удалить Docker-образ из реестра
    • Управление реестром
      • Получить информацию об имеющихся реестрах
      • Создать реестр
      • Изменить реестр
      • Удалить реестр
    • Управление репозиторием
      • Получить информацию об имеющихся репозиториях
    • Управление политиками автоматического удаления Docker-образов
      • Получить информацию об имеющихся политиках удаления
      • Создать политику удаления
      • Изменить политику удаления
      • Сделать тестовый запуск политики удаления
      • Удалить политику удаления
    • Сканирование на наличие уязвимостей
    • Работа с ролями
      • Назначить роль
      • Просмотреть назначенные роли
      • Отозвать роль
  • Yandex Container Solution
  • Сценарии использования
    • Все сценарии
    • Запуск Docker-образа на виртуальной машине
    • Создание триггера с помощью Yandex Cloud Functions
  • Концепции
    • Обзор
    • Docker-образ
    • Реестр
    • Репозиторий
    • Политика автоматического удаления Docker-образов
    • Триггер Yandex Cloud Functions
    • Сканер уязвимостей
    • Резервное копирование
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC
      • Обзор
      • ImageService
      • RegistryService
      • RepositoryService
      • OperationService
    • REST
      • Обзор
      • Image
        • Обзор
        • delete
        • get
        • list
      • Registry
        • Обзор
        • create
        • delete
        • get
        • list
        • update
      • Repository
        • Обзор
        • list
  • Решение проблем
  • Вопросы и ответы
  1. Пошаговые инструкции
  2. Аутентифицироваться в Container Registry

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

  • Способы аутентификации
  • Аутентифицироваться как пользователь
    • Аутентификация с помощью OAuth-токена
    • Аутентификация с помощью IAM-токена
  • Аутентифицироваться как сервисный аккаунт
    • Аутентификация с помощью авторизованных ключей
    • Аутентификация с помощью IAM-токена
  • Аутентифицироваться с помощью Docker Credential helper
    • Настройка Credential helper
    • Дополнительные опции Credential helper

Перед тем как начать работу с Container Registry, необходимо пройти аутентификацию для соответствующего интерфейса:

  • для Консоли управления минимально необходимая роль на каталог — viewer;
  • для Docker CLI минимально необходимая роль на реестр или репозиторий — container-registry.images.puller.

Подробнее про роли читайте в разделе Управление доступом.

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

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

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

  • Как пользователь:
    • С помощью OAuth-токена (срок жизни год).
    • С помощью IAM-токена (срок жизни не больше 12 часов).
  • Как сервисный аккаунт:
    • С помощью авторизованных ключей (неограниченный срок жизни).
    • C помощью IAM-токена (срок жизни не больше 12 часов).
  • С помощью хранилища учетных данных Docker Credential helper.

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

$ 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
    

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

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

Примечание

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

Используя сервисный аккаунт, ваши программы могут получать доступ к ресурсам Yandex.Cloud. Получите файл с авторизованными ключами для вашего сервисного аккаунта, используя 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 для Yandex.Cloud выступает программа docker-credential-yc. Она хранит учетные данные пользователя и позволяет работать с приватными реестрами Yandex.Cloud, не выполняя команду docker login. Этот способ аутентификации поддерживает использование от имени пользователя и от имени сервисного аккаунта. Для работы с docker-credential-yc вам понадобится интерфейс командной строки Yandex.Cloud: YC CLI.

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

Настройка 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'
    

    Настройки сохраняются в профиле текущего пользователя.

    Важно

    Credential helper работает только при использовании Docker без sudo. О том, как настроить запуск Docker от имени текущего пользователя без использования sudo читайте в официальной документации.

  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.

В этой статье:
  • Способы аутентификации
  • Аутентифицироваться как пользователь
  • Аутентификация с помощью OAuth-токена
  • Аутентификация с помощью IAM-токена
  • Аутентифицироваться как сервисный аккаунт
  • Аутентификация с помощью авторизованных ключей
  • Аутентификация с помощью IAM-токена
  • Аутентифицироваться с помощью Docker Credential helper
  • Настройка Credential helper
  • Дополнительные опции Credential helper
Language / Region
Вакансии
Политика конфиденциальности
Условия использования
Брендбук
© 2021 ООО «Яндекс.Облако»