Найти тему
День-дребедень

Podman ... в поисках образа

Оглавление

Коллеги, добрый день. В этой статье расскажу о том, как настроить в podman поиск образов сразу по нескольким репозитариям. И так...

Проблема

В описании podman говорится, что данный container engine не ограничивается поиском образа только по docker.io, а позволяет использовать и альтернативные реестры, такие например как quay.io или registry.redhat.io.

Но все мои эксперименты c podman pull говорили об обратном, поиск образа происходил только по docker.io

podman search busybox

NAME DESCRIPTION
docker.io/library/busybox Busybox base image.
docker.io/rancher/busybox
docker.io/chainguard/busybox Build, ship and run secure software with Cha...
docker.io/openebs/busybox-client
docker.io/antrea/busybox
docker.io/airbyte/busybox
docker.io/hugegraph/busybox test image

Исследуем

Не будем опускать руки, давайте более детально взглянем на наш podman. Выполним команду podman info.

podman info

host:
arch: arm64
buildahVersion: 1.35.4
cgroupControllers:
.....
.....
registries:
search:
- docker.io

И действительно, в списке поиска значится только один скучный docker.io. Ах, если была бы возможность добавить в этот список и другие реестры !

Добавляем

Не буду вас томить, такая возможность есть! Давайте шаг за шагом ;-)

Заходим на машину podman по ssh:

~ podman machine ssh

Connecting to vm podman-machine-default. To close connection, use `~.` or `exit`
Fedora CoreOS 40.20240519.2.0
Tracker: https://github.com/coreos/fedora-coreos-tracker
Discuss: https://discussion.fedoraproject.org/tag/coreos

Last login: Mon Jun 3 19:15:46 2024 from 192.168.127.1
root@localhost:~#

Редактируем файл /etc/containers/registries.conf.d/999-podman-machine.conf

root@localhost:~# vi /etc/containers/registries.conf.d/999-podman-machine.conf
Возможно на вашей podman machine название этого файла иное

И выставляем новое значение для переменной unqualified-search-registries

#unqualified-search-registries = ["docker.io"]
unqualified-search-registries = ["registry.fedoraproject.org", "registry.access.redhat.com", "quay.io", "registry.redhat.io", "docker.io"]

Теперь осталось только перезапустить podman machine. Это можно сделать как из командной строки,

podman machine stop
podman machine start

так и из Podman Dashboard.

Тестируем

Повторим наш эксперимент с поиском busybox, проведенный в самом начале статьи. И ура, все работает !

podman search busybox

NAME DESCRIPTION
quay.io/libpod/busybox This image is used for testing purposes only...
quay.io/prometheus/busybox # Prometheus Busybox Docker Base Images [![...
quay.io/quay/busybox Busybox base image.
quay.io/openshifttest/busybox
quay.io/vcppds7878/busybox

docker.io/library/busybox Busybox base image.
docker.io/rancher/busybox
docker.io/chainguard/busybox Build, ship and run secure software with Cha...
docker.io/openebs/busybox-client
docker.io/antrea/busybox
docker.io/airbyte/busybox
docker.io/hugegraph/busybox test image
docker.io/privatebin/chown Docker image providing busybox' chown, stat...
docker.io/yauritux/busybox-curl Busybox with CURL

И напоследок

Если внимательно изучить директорию /etc/containers/registries.conf.d, то можно обнаружить файл 000-shortnames.conf. В этом файле хранятся alias к образам, например:

# Gentoo
"gentoo" = "docker.io/gentoo/stage3"

И тогда обращение к образу возможно через его alias

podman pull gentoo

Resolved "gentoo" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull docker.io/gentoo/stage3:latest...
Getting image source signatures
Copying blob sha256:14223f93888260a72d8f8eb5411e62396440782fd22d68bbd2a4b7499a380590

Добавление/редактироваие alias сделает вашу работу с podman еще более комфортной.