Вопросы и ответы про Container Registry
latest
отсутствует или установлен не на последнем загруженном Docker-образе?
Почему тег Потому что вы указали другой тег при загрузке Docker-образа.
Docker-клиент подставляет тег latest
автоматически, если Docker-образ создается и загружается без тега. Также можно указать тег latest
явно.
Важно
Тег latest
не означает, что помеченная им версия Docker-образа была загружена последней.
Рекомендуется не перезаписывать теги, а использовать для каждой версии Docker-образа уникальный тег. Это позволяет использовать одну версию Docker-образа на всех ВМ с одинаковой спецификацией и облегчает поиск причины проблемы.
Как сделать реестр публичным?
Можно выдать роль container-registry.images.puller на ваш реестр для публичной группы All users.
Внимание
При этом все Docker-образы из этого реестра станут доступны без аутентификации.
Не назначайте публичной группе роли container-registry.images.pusher
, editor
и admin
на реестр. Это позволит любому, кто узнает идентификатор вашего реестра, пользоваться им.
У меня возникла ошибка. Что делать?
Ознакомьтесь с информацией в разделе Решение проблем в Container Registry, где перечислены часто встречающиеся ошибки и способы их решения.
Я могу получить логи моей работы в сервисах?
Да, вы можете запросить записи о том, что происходило с вашими ресурсами, из логов сервисов Yandex Cloud. Подробнее читайте в разделе Запросы данных.
Что означает ошибка "Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock"?
Вы запускаете команды не от пользователя root
.
Можете использовать sudo
или настроить non-root доступ
Как можно диагностировать работу Credential helper?
-
Проверьте, от какого пользователя операционной системы и на каком хосте запускаются команды CLI. Это должен быть пользователь, для которого сконфигурирован Credential helper и от имени которого была запущена команда
yc container registry configure-docker
. Соответствующая запись при этом появляется в файле/home/<user>/.docker/config.json
. Если вы выполняете действия на виртуальной машине, на ней тоже должен быть настроен Credential helper. -
Проверьте, есть ли Credential helper в
PATH
при вызове команд. Когда происходит аутентификация в Container Registry при помощи Credential helper, Docker обращается к бинарному файлуdocker-credential-yc
. Необходимо, чтобы этот бинарный файл был вPATH
для пользователя, который работает с Docker. Например, если Docker используется сsudo
, то иconfigure-docker
должен вызываться сsudo
. Проверить можно командойecho cr.yandex | docker-credential-yc get
илиecho cr.yandex | sudo docker-credential-yc get
, если команды вызываются из-подsudo
. Если все работает, вывод будет вида{"Username":"iam","Secret":"***<IAM-токен>***"}
. -
Если команды работают в интерактивном режиме, но не работают в неинтерактивном, проверьте файл
.bashrc
. Программыyc
иdocker-credential-yc
устанавливаются в директорию, которая обычно недоступна в дефолтномPATH
. В файл.bashrc
при этом прописываются следующие строки:# The next line updates PATH for Yandex Cloud CLI if [ -f '/home/<user>/yandex-cloud/path.bash.inc' ]; then source '/home/<user>/yandex-cloud/path.bash.inc'; fi
В начале файла
.bashrc
есть условие, что прописанные там команды не выполняются в неинтерактивном режиме. Из-за этого команды могут работать при заходе на ВМ вручную, но не работать по SSH.
Что означает ошибка "Error response from daemon: pull access denied for <cr.yandex/идентификатор_реестра/имя_Docker-образа>, repository does not exist or may require 'docker login': denied: Permission denied ; requestId = <идентификатор_запроса>"?
Для IP-адреса, с которого идет запрос на скачивание Docker-образа, нет разрешения на скачивание (PULL).
Добавьте разрешающие правила для этого IP-адреса в настройках реестра или удалите все правила и повторите попытку.