Аутентифицироваться в Container Registry
Перед тем как начать работу с Container Registry, необходимо пройти аутентификацию для соответствующего интерфейса:
- для Консоли управления минимально необходимая роль на каталог —
viewer
; - для Docker CLI минимально необходимая роль на реестр или репозиторий —
container-registry.images.puller
.
Подробнее про роли читайте в разделе Управление доступом в Container Registry.
Вы можете аутентифицироваться как пользователь или как сервисный аккаунт. Ознакомьтесь со способами аутентификации и выберите подходящий.
Способы аутентификации
Вы можете аутентифицироваться:
- Как пользователь:
- С помощью 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-токен и повторить процедуру аутентификации.
-
Если у вас еще нет OAuth-токена, получите его по ссылке.
-
Выполните команду:
$ docker login \ --username oauth \ --password <OAuth-токен> \ cr.yandex
Аутентификация с помощью IAM-токена
Примечание
У IAM-токена короткое время жизни — не больше 12 часов. Поэтому такой способ подойдет для приложений, которые будут запрашивать IAM-токен автоматически.
-
Выполните команду:
$ docker login \ --username iam \ --password <IAM-токен> \ cr.yandex
Аутентифицироваться как сервисный аккаунт
Аутентификация с помощью авторизованных ключей
Примечание
Срок жизни авторизованных ключей неограничен, но вы всегда можете получить новые авторизованные ключи и повторить процедуру аутентификации, если что-то пошло не так.
Используя сервисный аккаунт, ваши программы могут получать доступ к ресурсам Yandex Cloud. Получите файл с авторизованными ключами для вашего сервисного аккаунта, используя CLI.
-
Получите авторизованные ключи для вашего сервисного аккаунта:
$ 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
-
Выполните команду:
$ cat key.json | docker login \ --username json_key \ --password-stdin \ cr.yandex Login Succeeded
- Команда
cat key.json
записывает содержимое файла с ключом в поток вывода. - Флаг
--password-stdin
позволяет читать пароль из потока ввода.
- Команда
Аутентификация с помощью IAM-токена
Примечание
У IAM-токена короткое время жизни — не больше 12 часов. Поэтому такой способ подойдет для приложений, которые будут запрашивать IAM-токен автоматически.
-
Выполните команду:
$ 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
-
Если у вас еще нет профиля для YC CLI, создайте его.
-
Сконфигурируйте 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/<user>/.docker/config.json
должна появиться строка:"cr.yandex": "yc"
-
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
.