Работа с образами контейнеров#
Podman предназначен для работы с образами контейнеров. Он используется для извлечения, проверки, тегирования, сохранения, загрузки, распространения и определения подписи образа.
Извлечение образов контейнеров с использованием псевдонимов для коротких имен#
Можно использовать безопасные короткие имена, чтобы загрузить образ в пользовательскую локальную систему. Следующий сценарий описывает извлечение образа контейнера fedora и nginx.
Сценарий#
Для извлечения образа fedora используйте:
podman pull fedoraПример вывода команды:
Resolved "fedora" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf) Trying to pull registry.fedoraproject.org/fedora:latest… ... Storing signatures ...В данном примере псевдоним найден и образ
registry.fedoraproject.org/fedoraбезопасно извлечен. Списокunqualified-search-registriesне используется для получения имени образа fedora.Для извлечения образа nginx используйте:
podman pull nginxПример вывода команды:
? Please select an image: example.registry.ru/nginx:latest example1.registry.io/nginx:latest ▸ docker.io/library/nginx:latest ✔ docker.io/library/nginx:latest Trying to pull docker.io/library/nginx:latest… ... Storing signatures ...
Если соответствующие псевдонимы не найдены, будет предложено выбрать один из списка unqualified-search-registries. При успешном извлечении выбранного образа локально записывается новый псевдоним для короткого имени. В противном случае возникнет ошибка.
Проверка#
Выведите список всех образов, загруженных в пользовательскую локальную систему:
podman images
Пример вывода команды:
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.fedoraproject.org/fedora latest 28317703decd 12 days ago 184 MB
docker.io/library/nginx latest 08b152afcfae 13 days ago 137 MB
Получение списка образов#
Используйте команду podman images для отображения списка образов в пользовательском локальном хранилище:
podman images
Пример вывода команды:
| REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
| :--- | :--- | :--- | :--- | :--- |
| example.registry.ru/ubi9/ubi | latest | 3269c37eae33 | 6 weeks ago | 208 MB |
Просмотр локальных образов#
После загрузки и запуска образа, можно использовать команду podman inspect для его для изучения. Например, чтобы понять функции образа или проверить, какое ПО находится внутри. Команда podman inspect отображает информацию о контейнерах и образах, идентифицированных по имени или ID.
Для просмотра информации образа используйте example.example.ru/ubi9/ubi:
podman inspect example.example.ru/ubi9/ubi
Пример вывода команды:
...
"Cmd": [
"/bin/bash"
],
"Labels": {
"architecture": "x86_64",
"build-date": "2020-12-10T01:59:40.343735",
"ru.example.build-host": "cpt-1002.osbs.prod.upshift.rdu2.sberlinux.ru",
"ru.example.component": "ubi9-container",
"ru.example.license_terms": "https://www.example.ru/...,
"description": "The Universal Base Image is ...
}
...
Ключ "Cmd" задает команду запуска контейнера по умолчанию. Ее можно переопределить, указав опцию для podman run. Контейнер ubi9/ubi запустится через оболочку bash, если опции отсутствуют. Присутствие ключа "Entrypoint" заменяет значение "Cmd", а само значение "Cmd" будет использоваться в качестве опции для команды Entrypoint.
Просмотр удаленных образов#
Используйте команду scope inspect для отображения информации об образе из реестра удаленного контейнера, прежде чем загружать образ в пользовательскую систему.
Проверьте реестр образа с помощью example.registry.ru/ubi9/ubi-init:
skopeo inspect docker://example.registry.com/ubi9/ubi-init\
Пример вывода команды:
{
"Name": "example.registry.ru/ubi9/ubi-init",
"Digest": "sha256:c6d1e50ab...",
"RepoTags": [
...
"latest"
],
"Created": "2023-12-10T07:16:37.250312Z",
"DockerVersion": "1.13.1",
"Labels": {
"architecture": "x86_64",
"build-date": "2020-12-10T07:16:11.378348",
"ru.example.build-host": "cpt-1007.osbs.prod.upshift.rdu2.sberlinux.ru",
"ru.example.component": "ubi9-init-container",
"ru.example.license_terms": "https:/example.ru/en/about/example-end-user-license-agreements#UBI",
"description": "The Universal Base Image Init is designed to run an init system as PID 1 for running multi-services inside a container
...
}
}
Копирование образов контейнеров#
Можно использовать команду skopeo copy для копирования образа контейнера из одного реестра в другой. Например, заполнить внутреннее хранилище образами из внешних реестров или синхронизировать реестры образов в разных местах.
Скопируйте образ контейнера skopeo из docker://quay.io в docker://registry.example.ru:
skopeo copy docker://quay.io/skopeo/stable:latest docker://registry.example.ru/skopeo:latest
Копирование слоев образа в локальный каталог#
Команда skopeo copy может использоваться для копирования слоев образа контейнера в локальный каталог.
Создайте каталог
/var/lib/images/nginx:mkdir -p /var/lib/images/nginxСкопируйте в нее слои из
docker://docker.io/nginx:latest image:skopeo copy docker://docker.io/nginx:latest dir:/var/lib/images/nginx
Проверка#
Проверьте содержимое каталога /var/lib/images/nginx:
ls /var/lib/images/nginx
Пример вывода команды:
08b11a3d692c1a2e15ae840f2c15c18308dcb079aa5320e15d46b62015c0f6f3
...
4fcb23e29ba19bf305d0d4b35412625fea51e82292ec7312f9be724cb6e31ffd manifest.json
version
Маркировка образов тегами#
Используйте команду podman tag, чтобы добавить дополнительное имя к локальному образу. Оно может состоять из нескольких частей: <registryhost>/<username>/<name>:<tag> (<узел реестра>/<имя пользователя>/<имя пользователя>:<тег>).
Выведите список всех образов, загруженных в локальное хранилище:
podman imagesПример вывода команды:
REPOSITORY TAG IMAGE ID CREATED SIZE registry.example.ru/ubi9/ubi latest 3269c37eae33 7 weeks ago 208 MBПрисвоите имя
myubiрееструregistry.example.ru/ubi9/ubi, используя один из следующих вариантов:Имя образа:
podman tag registry.example.ru/ubi9/ubi myubiID образа:
podman tag 3269c37eae33 myubi
Обе команды ведут к одинаковому результату.
Выведите список всех образов:
podman imagesПример вывода команды:
REPOSITORY TAG IMAGE ID CREATED SIZE registry.example.ru/ubi9/ubi latest 3269c37eae33 2 months ago 208 MB localhost/myubi latest 3269c37eae33 2 months ago 208 MBОбратите внимание, что тег
latestпо умолчанию присутствует у обоих образов. А имена образов присвоены одному ID3269c37eae33.Добавьте тег
9к образуregistry.example.ru/ubi9/ubi, используя один из следующих вариантов:Имя образа:
podman tag registry.example.ru/ubi9/ubi myubi9ID образа:
podman tag 3269c37eae33 myubi9
Обе команды ведут к одинаковому результату.
Выведите список всех образов:
podman imagesПример вывода команды:
REPOSITORY TAG IMAGE ID CREATED SIZE registry.example.ru/ubi9/ubi latest 3269c37eae33 2 months ago 208 MB localhost/myubi latest 3269c37eae33 2 months ago 208 MB localhost/myubi 9 3269c37eae33 2 months ago 208 MBОбратите внимание, что тег
latestпо умолчанию присутствует у обоих образов. А имена образов присвоены одному ID3269c37eae33.
После пометки тегом существует три варианта запуска контейнера:
по ID (3269c37eae33);
по имени (localhost/myubi:latest);
по имени (localhost/myubi:9).
Сохранение и загрузка образов#
Используйте команду podman save для сохранения образа в архив контейнера. Позже его можно восстановить в другой среде или отправить другому пользователю. Для указания формата архива используйте опцию --format.
Поддерживаемые форматы:
docker-archive;oci-archive;oci-dir(каталог с типом манифестаoci);docker-dir(каталог с типом манифестаv2s2) - формат по умолчанию.
Используйте команду podman load, чтобы загрузить образ из архива образов контейнера в хранилище.
Сценарий#
Для сохранения образа в архив контейнера выполните следующие действия:
Сохраните образ
registry.example.ru/slo9/rsyslogв качестве tar-архива:В формате
docker-dirпо умолчанию:podman save -o myrsyslog.tar registry.example.ru/slo9/rsyslog:latestВ формате
oci-archive, используя опцию--format:podman save -o myrsyslog-oci.tar --format=oci-archive registry.example.ru/slo9/rsyslog
Архивы myrsyslog.tar и myrsyslog-oci.tar хранятся в текущем каталоге. Следующие шаги выполняются с архивом myrsyslog.tar.
Проверьте тип файла
myrsyslog.tar:file myrsyslog.tarПример вывода команды:
myrsyslog.tar: POSIX tar archiveЗагрузите образ
registry.example.ru/slo9/rsyslog:latestизmyrsyslog.tar:podman load -i myrsyslog.tarПример вывода команды:
... Loaded image(s): registry.example.ru/rhel9/rsyslog:latest
Распространение образов UBI#
Используйте команду podman push, чтобы поместить образ UBI в собственный или сторонний реестр и поделиться им с другими пользователями. Можно обновить или добавить этот образ из репозиториев UBI по своему усмотрению.
Для добавления дополнительного имеми к образу ubi используйте команду:
podman tag registry.example.ru/ubi9/ubi registry.example.ru:5000/ubi9/ubi
Переместите образ registry.example.ru:5000/ubi9/ubi из пользовательского локального хранилища в реестр:
podman push registry.example.ru:5000/ubi9/ubi
Удаление образов#
Используйте команду podman rmi для удаления локально сохраненных образов контейнера. Можно удалить образ по его имени или ID:
Выведите список всех образов, загруженных в локальное хранилище:
podman imagesПример вывода команды:
REPOSITORY TAG IMAGE ID CREATED SIZE registry.example.ru/slo9/rsyslog latest 4b32d14201de 7 weeks ago 228 MB registry.ew[ample]ru./ubi9/ubi latest 3269c37eae33 7 weeks ago 208 MB localhost/myubi X.Y 3269c37eae33 7 weeks ago 208 MBВыведите список всех контейнеров:
podman ps -aПример вывода команды:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7ccd6001166e registry.example.ru/rhel9/rsyslog:latest /bin/rsyslog.sh 6 seconds ago Up 5 seconds ago mysyslogДля удаления образа
registry.example.ru/slo9/rsyslogнеобходимо остановить все контейнеры, запущенные в нем, при помощи командыpodman stop.Остановите контейнер
mysyslog:podman stop mysyslogПример вывода команды:
7ccd6001166e9720c47fbeb077e0afd0bb635e74a1b0ede3fd34d09eaf5a52e9Удалите образ
registry.example.ru/slo9/rsyslog:podman rmi registry.example.ru/slo9/rsyslogДля удаления нескольких образов используйте:
podman rmi registry.example.ru/rhel8/rsyslog registry1.example.io/ubi8/ubyДля удаления всех образов из пользовательской системы используйте:
podman rmi -aДля удаления образа, с которыми связано несколько имен (тегов), добавьте опцию
-f:podman rmi -f 1de7d7b3f531Пример вывода команды:
1de7d7b3f531...