Работа с реестрами контейнеров#
Реестр образов контейнеров — это репозиторий или коллекция репозиториев для хранения образов контейнеров и артефактов приложений на их основе. Файл /etc/containers/registries.conf - общесистемный конфигурационный файл, содержащий реестры образов контейнеров, которые могут использоваться различными контейнерными инструментами.
Если образ контейнера, предоставленный инструменту контейнеризации, не полностью определен, то инструмент обращается к файлу registries.conf. В нем можно указать псевдонимы для коротких имен, предоставляя пользователям с административными полномочиями полный доступ, откуда извлекаются образы, если они не соответствуют полным требованиям.
Например, команда postman pull example.ru/example_image извлекает образ контейнера из реестра example.ru в пользовательскую локальную систему, как указано в файле registries.conf.
Реестры контейнеров#
Реестр контейнеров — это репозиторий или набор репозиториев для хранения образов контейнеров и артефактов приложений на основе контейнеров.
Чтобы загрузить образы контейнеров из удаленного реестра и добавить их в свою локальную систему, используйте команду podman pull:
podman pull <registry>[:<port>]/[<namespace>/]<name>:<tag>
Где <registry>[:<port>]/[<namespace>/]<name>:<tag> - это имя образа контейнера.
Например, образ контейнера example.registry.ru/ubi9/ubi идентифицируется с помощью:
Серверов реестра (
example.registry.ru);Namespace (
ubi9);Имени образа (
ubi).
Если существует несколько версий одного и того же образа, добавьте тег, чтобы конкретно указать на его имя. По умолчанию Podman использует тег :latest, например ubi9/ubi:latest.
Некоторые реестры также используют namespace для разделения образов с одинаковыми \<name>, принадлежащих разным пользователям или организациям. Например:
Namespace |
Примеры ( |
|---|---|
Организация |
|
Логин (имя пользователя) |
|
Роль |
|
Настройка реестров контейнеров#
Для отображения реестра контейнеров используйте команду podman info --format:
podman info -f json | jq '.registries["search"]'
Пример выполнения команды:
[
"registry.access.example.ru",
"example.registry.io"
]
Редактирование списка реестров доступно в файле конфигурации registries.conf. От имени пользователя с полномочиями администратора отредактируйте файл /etc/containers/registries.conf, чтобы изменить базовые настройки общесистемного поиска.
От имени пользователя без административных полномочий создайте файл $HOME/.config/containers/registries.conf, чтобы переопределить общесистемные настройки.
unqualified-search-registries = ["registry.access...", "registry..."]
short-name-mode = "enforcing"
По умолчанию команды podman pull и podman search выполняют поиск образов контейнеров из реестров, перечисленных в списке unqualified-search-registries, в указанном порядке.
Настройка локального реестра контейнеров#
Можно настроить локальный реестр контейнеров без проверки TLS. Существует два варианта отключения проверки:
Ипользование параметра
--tls-verify=falseв Podman;Внесение значения
insecure=trueв файлеregistries.conf:
[[registry]]
location="localhost:5000"
insecure=true
Ограничение доступа к реестру, namespace или образу#
Реализована возможность выбора реестров, к которым можно запретить доступ локальной системы. Чтобы ограничить определенный реестр, установите значение blocked=true:
[[registry]]
location = "registry.example.org"
blocked = true
Также можно ограничить namespace, установив значение префикса: prefix="registry.example.org/namespace".
Например, извлечение образа с помощью команды podman pull registry.example.org/example/image:latest заблокируется, поскольку совпадет с префиксом:
[[registry]]
location = "registry.example.org"
prefix="registry.example.org/namespace"
blocked = true
Примечание
Опция prefix опциональна, поскольку ее значение по умолчанию совпадает со значением location.
Можно ограничить определенный образ при помощи prefix="registry.example.org/namespace/image":
[[registry]]
location = "registry.example.org"
prefix="registry.example.org/namespace/image"
blocked = true
Зеркалирование реестров#
Можете настроить зеркало реестра в случае отсутствия доступа к исходному реестру.
Например, при запуске команда podman pull registry.example.ru/myimage:latest сначала пытается обратится к mirror-1.com, затем к mirror-2.com:
[[registry]]
location="registry.example.ru"
[[registry.mirror]]
location="mirror-1.ru"
[[registry.mirror]]
location="mirror-2.ru"
Поиск образов контейнеров#
С помощью команды podman search можно выполнить поиск образов в выбранных реестрах контейнеров.
Примечание
Команда podman search - ненадежный способ определения наличия образа. Поведение podman search зависит от реализации каждого реестра. Некоторые реестры могут не поддерживать поиск. Поиск без поискового запроса работает только для реестров, реализующих API версии 2.
Для поиска образов image-1 в реестре registry.io убедитесь, что реестр настроен, и выполните следующие действия:
Пройдите аутентификацию в реестре:
podman login registry.ioВыполните поиск образа:
Для поиска определенного образа в определенном реестре введите:
podman search registry.io/image-1Пример вывода команды:
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED DESCRIPTION STARS OFFICIAL AUTOMATED example.ru registry.sberlinux/slo9/image-1 This container image ... 0 example.ru registry.sberlinux/slc/image-1-slo8 <Image> is an ... 0Или отобразите все образы, предоставленные определенным реестром:
podman search registry.io/Для поиска имени образа во всех реестрах введите:
podman search image-1
Чтобы вывести детальные описания, добавьте параметр
--no-trunc.
Извлечение образов из реестров#
Используйте команду podman pull для загрузки образа в пользовательскую локальную систему.
Войдите в реестр:
podman login registry...Пример выполнения команды:
Username: <username> Password: <password> Login Succeeded!Извлеките образ контейнера:
podman pull registry.../ubi9/ubiВыведите список всех образов, загруженных в пользовательскую локальную систему:
podman imagesВывод должен отображать следующие значения:
REPOSITORY TAG IMAGE ID CREATED SIZE registry.../ubi9/ubi latest 3269c37eae33 7 weeks ago 208 MB
Настройка псевдонимов для коротких имен#
Рекомендуется всегда извлекать образы по его полному имени. Однако традиционно используются короткие имена. Например, можно ввести ubi9 вместо registry.../ubi9:latest.
Файл registries.conf позволяет указывать псевдонимы для коротких имен, предоставляя пользователям с административными полномочиями полный контроль над тем, откуда извлекаются образы. Псевдонимы указываются в таблице [aliases] в форме "name" = "value". Списки псевдонимов располагаются в каталоге /etc/containers/registries.conf.d.
Например:
unqualified-search-registries=["registry.example.ru", “registry.io"]
[aliases]
"example-1"="registry.example.ru/example-1"
Режимы коротких имен#
Режим enforcing запускается, если во время извлечения образа не найден подходящий псевдоним. Podman предлагает пользователю выбрать один из реестров с неквалифицированным поиском. Если выбранный образ извлечен успешно, Podman автоматически записывает новый псевдоним с коротким именем в файл $HOME/.cache/containers/short-name-aliases.conf (для пользователей без административных полномочий) или в /var/cache/containers/short-name-aliases.conf (для пользователей с административными полномочиями). Если не удается получить запрос, Podman выдаст ошибку.
Важно
Обратите внимание, что файл short-name-aliases.conf имеет приоритет над файлом registries.conf, если в обоих указан одинаковый псевдоним.
Режим permissive действует анологично с enforcing, но Podman не выдает ошибку, если пользователю не удается получить запрос. Вместо этого он делает запрос во все реестры с неквалифицированным поиском в указанном порядке. Обратите внимание, что псевдоним не записывается.
В режиме disabled все реестры с неквалифицированным поиском проверяются в заданном порядке и псевдонимы не записываются.