Аутентифицироваться в Container Registry
Перед началом работы с Container Registry необходимо настроить Docker и аутентифицироваться для соответствующего интерфейса:
- Для Консоли управления минимально необходимая роль на каталог —
viewer
. - Для Docker CLI или Yandex Managed Service for Kubernetes минимально необходимая роль на реестр или репозиторий —
container-registry.images.puller
.
Назначьте нужную роль пользователю Yandex Cloud. Ознакомьтесь со способами аутентификации и выберите подходящий.
Подробнее про роли читайте в разделе Управление доступом в Container Registry.
Способы аутентификации
Вы можете аутентифицироваться:
-
- С помощью OAuth-токена (срок жизни — год).
- С помощью IAM-токена (срок жизни — не более 12 часов).
-
С помощью хранилища учетных данных Docker Credential helper.
Аутентифицироваться как пользователь
Примечание
Срок жизни OAuth-токена — 1 год. После этого необходимо получить новый OAuth-токен
-
Если у вас не установлен Docker, установите его.
-
Если у вас еще нет OAuth-токена, получите его по ссылке
. -
Выполните команду:
echo <OAuth-токен>|docker login \ --username oauth \ --password-stdin \ cr.yandex
Где:
<OAuth-токен>
— тело полученного ранее OAuth-токена.--username
— тип токена: значениеoauth
указывает на то, что для аутентификации используется OAuth-токен.cr.yandex
— эндпоинт, к которому будет обращаться Docker при работе с реестром образов. Если его не указать, запрос пойдет в сервис по умолчанию — Docker Hub .
Примечание
У IAM-токена короткое время жизни — не более 12 часов. Поэтому такой способ подойдет для приложений, которые будут запрашивать IAM-токен автоматически.
-
Если у вас не установлен Docker, установите его.
-
Выполните команду:
echo <IAM-токен>|docker login \ --username iam \ --password-stdin \ cr.yandex
Где:
<IAM-токен>
— тело полученного ранее IAM-токена.--username
— тип токена: значениеiam
указывает на то, что для аутентификации используется IAM-токен.cr.yandex
— эндпоинт, к которому будет обращаться Docker при работе с реестром образов. Если его не указать, запрос пойдет в сервис по умолчанию — Docker Hub .
При выполнении команды вы можете получить сообщение об ошибке: docker login is not supported with yc credential helper
.
В этом случае отключите Docker Credential helper. Подробнее см. в разделе Решение проблем в Container Registry.
Аутентифицироваться с помощью Docker Credential helper
Docker Engine может хранить учетные данные пользователя во внешнем хранилище. Это безопаснее, чем хранить их в конфигурационном файле Docker. Чтобы использовать хранилище учетных данных, необходима внешняя программа — Docker Credential helper
В состав Yandex Cloud CLI входит утилита docker-credential-yc
, которая выступает в роли Docker Credential helper для Yandex Cloud. Она хранит учетные данные пользователя и позволяет работать с приватными реестрами Yandex Cloud, не выполняя команду docker login
.
Настройка Credential helper
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Сконфигурируйте 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
читайте в официальной документации . -
Проверьте, что Docker сконфигурирован.
В конфигурационном файле
${HOME}/.docker/config.json
должна появиться строка:"cr.yandex": "yc"
-
Docker готов к использованию, например, для загрузки Docker-образов.
Дополнительные опции Credential helper
Использовать Credential helper для другого профиля Yandex Cloud CLI
Вы можете использовать Credential helper для другого профиля, не переключая текущий, с помощью команды:
yc container registry configure-docker --profile <имя_профиля>
Подробнее об управлении профилями читайте в пошаговых инструкциях Yandex Cloud CLI.
Не использовать Credential helper
Чтобы не использовать Credential helper при аутентификации, удалите в конфигурационном файле ${HOME}/.docker/config.json
из блока credHelpers
строку домена cr.yandex
.