Создание и уничтожение контейнеров в Podman

В этой статье о Podman давайте рассмотрим создание и удаление контейнеров. Если вы еще не знали, Podman — это альтернатива Docker для управления контейнерами. Он имеет ту же структуру команд, что и Docker.

Предварительно извлекаем изображения

Для существования каждого контейнера необходимо изображение (image). Без изображения ничего не выполняется. Следовательно, изображение необходимо «вытащить» из реестра изображений.

Некоторые из популярных реестров изображений:

Синтаксис получения изображения с помощью Podman следующий:

podman pull [OPTIONS] FULLY_QUALIFIED_IMAGE_NAME[:tag|@digest]

Если вам интересно, что FULLY_QUALIFIED_IMAGE_NAME значит, посмотрите на две команды ниже:

# with FQIN
podman pull docker.io/library/debian

# without FQIN
podman pull debian

Как вы могли заметить, полное имя изображения имеет следующий формат: registry/username/image-name. Адрес реестра hub.docker.com для docker.io.

Чтобы получить определенный тег, примените его после имени изображения, после чего поставьте двоеточие ( :). Ниже приведена команда для извлечения stable-slim тега образа Debian:

podman pull docker.io/library/debian:stable-slim

Список доступных изображений

После извлечения одного или нескольких изображений вы можете проверить, какие изображения доступны локально, с помощью этой podman images команды. Поскольку я вытащил debian:stable-slim изображение, мой вывод выглядит следующим образом:

$ podman images
REPOSITORY                TAG          IMAGE ID      CREATED     SIZE
docker.io/library/debian  stable-slim  86f9b934c377  2 days ago  77.8 MB

Теперь, когда у вас есть изображение, вы можете создать новый контейнер.

Создание контейнера

Чтобы создать контейнер с Podman, используйте podman runкоманду следующим образом:

podman run [OPTIONS] image [COMMAND [ARGS]]

Я буду использовать -d опцию, чтобы контейнер работал в фоновом режиме. Мы также воспользуемся -t возможностью назначить псевдо-TTY для образа Debian, чтобы он продолжал работать. Полный список доступных опций вы можете найти здесь.

Сейчас я создам простой контейнер на основе stable-slim образа Debian, который вы извлекли ранее.

podman run -d -t debian:stable-slim

Если создание контейнера прошло успешно, в качестве вывода команды вы получите случайную строку буквенно-цифровых символов. Это уникальный идентификатор контейнера.

61d1b10b5818f397c6fd8f1fc542a83810d21f81825bbfb9603b7d99f6322845

Получение списка контейнеров

Чтобы просмотреть все запущенные контейнеры, используйте podman ps команду. Это похоже на команду ps в Linux. Вместо отображения системных процессов он показывает запущенные контейнеры и их детали.

Поскольку мы использовали эту опцию в качестве хака, чтобы поддерживать работу контейнера Debian, давайте посмотрим, как выглядит -t вывод команды podman ps.

$ podman ps
CONTAINER ID  IMAGE                                 COMMAND     CREATED         STATUS             PORTS       NAMES
61d1b10b5818  docker.io/library/debian:stable-slim  bash        44 seconds ago  Up 44 seconds ago              gallant_mahavira

Отсюда вы можете получить различную информацию о названии нашего контейнера. Некоторые детали — это более короткий, но уникальный идентификатор контейнера, изображение, использованное для создания этого контейнера, время его создания, какие порты хост-компьютера сопоставляются с какими портами контейнера и имя контейнера.

Здесь вы можете видеть, что использованное изображение было debian:stable-slim создано 44 секунды назад и имя контейнера — gallant_mahavira. Если имя контейнера не указано, оно генерируется случайным образом. Вы можете передать имя контейнера при создании контейнера, используя эту --name CONTAINER_NAME опцию.

Контейнер может либо работать, либо не работать (остановлен). Остановленные контейнеры можно перечислить следующим образом:

podman container list -a

У меня пока нет остановленных контейнеров, поэтому давайте сначала научимся их останавливать.

Остановка контейнеров

Чтобы остановить контейнер, используйте podman stop команду, указав либо идентификатор контейнера, либо имя контейнера.

Ниже приведен синтаксис команды podman stop:

podman stop [CONTAINER_NAME|CONTAINER_ID]

Позвольте нам остановить работающий контейнер, используя его имя:

$ podman stop gallant_mahavira
gallant_mahavira

Теперь вы можете использовать вышеупомянутую команду для вывода списка всех контейнеров, включая остановленные:

$ podman container list -a
CONTAINER ID  IMAGE                                 COMMAND     CREATED         STATUS                      PORTS       NAMES
61d1b10b5818  docker.io/library/debian:stable-slim  bash        14 minutes ago  Exited (137) 3 minutes ago              gallant_mahavira
Команды podman ps, podman container ps, podman container list и podman container ls все связаны с одним podman container ps и тем же двоичным файлом, и эти команды могут использоваться взаимозаменяемо . т. е. вы можете запустить команду podman ps -a вместо команды podman container list -a и получить тот же результат.

Запуск контейнера, который был остановлен

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

Предположим, что контейнер, созданный вами из образа Debian, по какой-либо причине не удался, вы можете запустить его снова, используя имя или идентификатор контейнера, например:

$ podman start 61d1b10b5818f397c6fd8f1fc542a83810d21f81825bbfb9603b7d99f6322845

Уничтожение контейнера

Чтобы полностью удалить или уничтожить контейнер, вы используете podman rm команду.

Обязательно остановите контейнер перед его удалением.

После удаления контейнера он больше не будет существовать. Итак, когда вы проверите вывод команды podman container list -a, контейнера не будет в списке.

Вот пример остановки и удаления контейнера с помощью Podman. В примере мы использовали имя контейнера, и его идентификатор.

$ podman ps
CONTAINER ID  IMAGE                                 COMMAND     CREATED         STATUS           PORTS       NAMES
61d1b10b5818  docker.io/library/debian:stable-slim  bash        44 minutes ago  Up 1 second ago              gallant_mahavira

$ podman stop gallant_mahavira
gallant_mahavira

$ podman rm 61d1b10b5818
61d1b10b5818f397c6fd8f1fc542a83810d21f81825bbfb9603b7d99f6322845

$ podman container list -a
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

Как вы можете видеть сейчас, контейнер полностью исчез. Если хотите, вы можете создать новый контейнер, используя любое изображение.

Заключение

В этом руководстве рассматриваются основы управления контейнерами с помощью Podman. Вы узнали о создании контейнеров, их перечислении, остановке и удалении.