Образы и контейнеры
Поиск образов
Ищите образы по ключевому слову:
$ podman search fedora $ podman search homeassistant
Реестры, в которых будет выполняться поиск, настраиваются в файле /etc/containers/registry.conf.
Результат поиска будет включать как расположение реестра, так и имя образа.
-
Имя реестра может включать номер порта.
-
Имя образа состоит из USER/REPO. Пользователь может быть отдельным лицом, командой или компанией, загружающей образы в реестр.
-
Репозиторий образов содержит помеченные тегами образы и скрытые слои. Большинство репозиториев содержат образ с тегом «latest».
-
При загрузке образа с помощью команд pull, run или build вы можете указать конкретный образ с тегом. По умолчанию загружается образ с тегом «latest».
Команда skopeo — это утилита для работы с образами во множестве различных контейнерных окружений. Она была создана для просмотра информации в удалённых реестрах и теперь является командой и библиотекой для копирования образов с различными транспортами. Она используется для управления образами контейнеров и их хранилищем удалённо и локально, и всё это без необходимости прав root. Она также может передавать учётные данные аутентификации, когда это требуется репозиторием.
Просмотрите даты создания, архитектуры, метки, теги и контрольные суммы слоёв удалённого репозитория образов:
$ skopeo inspect docker://registry.fedoraproject.org/fedora-minimal
Управление локальными образами
При запуске контейнера образ сначала загружается в локальную систему. Может быть полезно заранее загрузить образ отдельной командой.
По умолчанию загружается последний образ из реестра по умолчанию:
$ podman pull fedora
Вы также можете указать реестр, пользователя, тег или, как в следующем примере, некоторую комбинацию:
$ podman pull registry.fedoraproject.org/fedora-minimal:rawhide
Выведите список локальных образов:
$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE registry.fedoraproject.org/fedora-minimal rawhide 8ecda3b9bc0d 2 days ago 164MB docker.io/homeassistant/raspberrypi3-homeassistant latest 3c74046ca2a7 3 days ago 1.05GB docker.io/library/fedora latest 8b38e3af7237 4 weeks ago 315MB
Тот же вывод отображается с помощью podman image ls. Обратите внимание на команду «image» в единственном числе перед дополнительной командой «ls». Если у вас много образов, вы можете указать фильтры или отсортировать по значению, отличному от даты создания.
Как пользователь, локальные образы будут храниться в каталоге ~/.local/share/containers/. У каждого пользователя своё пространство имён, поэтому они отделены от контейнеров, запущенных от имени root. Список образов, доступных root, отображает другой или пустой список:
$ sudo podman images
Некоторые действия невозможно выполнить с контейнерами без прав root. Некоторые устройства и тома потребуют, чтобы вы загружали и запускали контейнеры в пространстве имён root. Текущая версия podman v1.0 также требует root для публикации портов. Следующая версия позволит публиковать порты без прав root.
Как и удалённые образы, локальные образы также можно исследовать:
$ podman inspect fedora
Чтобы исследовать образ с тегом, отличным от «latest», укажите тег:
$ podman inspect fedora-minimal:rawhide
Запуск контейнеров
Чтобы запустить контейнер, используйте:
$ podman run fedora
С образом fedora контейнер запустится, а затем завершится, так как больше нечего выполнять. Некоторые образы настроены на запуск приложения на переднем плане, и контейнер не завершится, пока не завершится приложение.
Чтобы вывести список запущенных контейнеров, используйте:
$ podman container ls
Чтобы увидеть все контейнеры, включая завершённые:
$ podman container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES IS INFRA 7835aaadd2d1 docker.io/library/fedora:latest /bin/bash About a minute ago Exited (0) 14 seconds ago hopeful_beaver false
Завершённые контейнеры сохраняются, чтобы можно было исследовать любые данные, включая журналы, прежде чем они будут потеряны. Вы можете запустить завершённый контейнер, но типичный рабочий процесс обычно удаляет использованные контейнеры, запуская новые по мере необходимости.
Опции команды run могут изменить поведение при запуске контейнера:
$ podman run -it \ (1) > --name demo \ (2) > --rm \ (3) > fedora /bin/bash (4) bash-4.4# (5)
| 1 | Опции -it включают интерактивный режим и выделяют псевдо-TTY. |
| 2 | Вы можете задать имя вашему контейнеру. Без этой опции будет сгенерировано случайное имя. |
| 3 | Опция --rm приводит к удалению контейнера при его завершении. Это экономит место и позволяет запустить новый контейнер с тем же именем. |
| 4 | Команда для запуска. Команда должна присутствовать в образе. Не все образы включают bash. |
| 5 | Процесс /bin/bash работает на переднем плане. Когда вы выйдете из оболочки, контейнер завершится. |
Публикация портов
Если ваше приложение прослушивает сеть, вам потребуется сопоставить порт контейнера с локальным портом на вашем устройстве. В текущей версии публикация портов требует root, поэтому образ должен быть доступен в пространстве имён root.
Добавьте опцию -p при запуске контейнера:
$ sudo podman run -p 127.0.0.1:8080:80 --name demo mydemohttp:latest
Затем вы можете подключиться к вашему приложению через 127.0.0.1:8080
Формат: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort.
Другие опции публикации портов и множество других опций запуска доступны и хорошо задокументированы на странице man podman-run.
Сопоставление локального каталога
Возможно, вы захотите, чтобы ваше приложение записывало журналы или собирало данные в каталог на хосте. Некоторые контейнеры ожидают, что настроенные файлы конфигурации находятся на хост-устройстве. В обоих случаях вы можете создать привязанное монтирование с опцией --volume. Укажите каталог хоста, точку монтирования внутри контейнера и любые опции монтирования.
Например, Home Assistant ожидает, что файлы конфигурации находятся на хост-устройстве:
$ podman run -d --name="home-assistant" -v /home/pi/homeassistant:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/raspberrypi3-homeassistant
Сопоставление локального устройства
Опция --device добавит хост-устройство в контейнер. Укажите имя хост-устройства и, необязательно, имя устройства в контейнере и любые разрешения. Некоторые устройства, такие как устройство GPIO, потребуют root.
Чтобы получить доступ к GPIO-устройству хоста из контейнера:
$ sudo podman run -it --rm --name demo-gpio --device=/dev/gpiochip0 fedora:latest /bin/bash
Подключение к запущенному контейнеру
Вы также можете подключиться к запущенному контейнеру. Укажите имя или ID контейнера и команду для выполнения:
$ podman exec -it demo /bin/bash
Вы также можете просматривать журналы контейнера напрямую с помощью podman:
$ podman logs demo
Обе команды exec и logs также являются частью команды podman container.
Удаление контейнеров и образов
Выведите список контейнеров, чтобы увидеть «Container ID» и «name» каждого контейнера. Удалите контейнер, указав либо ID контейнера, либо имя:
$ podman container rm demo
Удаление контейнера происходит автоматически при завершении контейнера, если контейнер был запущен с опцией --rm.
Удаление контейнера не удаляет образ. Выведите список локальных образов с помощью podman images или podman image ls. Удалите образ, используя либо «IMAGE ID», либо имя репозитория и тег:
$ podman rmi registry.fedoraproject.org/fedora-minimal:rawhide
Вы также можете удалить образ с помощью команды image:
$ podman image rm registry.fedoraproject.org/fedora-minimal:rawhide
Want to help? Learn how to contribute to Fedora Docs ›