Установка podman на Linux

Обновлено и опубликовано Опубликовано:

Используемые термины: Podman, DockerLinux.

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

Установка podman

Для различных дистрибутивов Linux потребуется выполнить разные операции. Рассмотрим их по отдельности.

Ubuntu / Debian

В репозитории систем на базе deb пакета podman может не быть. Выполним установку репозитория от Red Hat.

Смотрим версию нашей системы:

cat /etc/os-release | grep VERSION_ID

В моем случае это было:

VERSION_ID="20.04"

Создадим переменную с версией — у меня будет такая команда:

export VERSION_ID="20.04"

Добавим ключ репозитория:

curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -

И пропишем сам репозиторий:

echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" > /etc/apt/sources.list.d/podman.list

Обновим список пакетов:

apt update

Установим podman:

apt install podman

Rocky Linux / CentOS / Fedora / Red Hat

В системах на базе RPM, как правило, podman устанавливается из встроенного репозитория.

Вводим команду:

yum install podman

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

Чтобы проверить корректность работы podman, вводим команду:

podman run hello-world

Данная команда запустит контейнер на основе образа hello-world. В итоге, мы должны увидеть что-то на подобие:

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
...

Или:

!... Hello Podman World ...!

         .--"--.           
       / -     - \         
      / (O)   (O) \        
   ~~~| -=(,Y,)=- |         
    .---. /`  \   |~~      
 ~/  o  o \~~~~.----. ~~   
  | =(X)= |~  / (O (O) \   
   ~~~~~~~  ~| =(Y_)=-  |   
  ~~~~    ~~~|   U      |~~
...

Базовые команды

Рассмотрим основные команды для работы с Podman.

1. Поиск образов.

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

Найти нужную запись можно командой:

podman search <имя образа>

Например:

podman search nginx

* в данном примере мы попробуем найти образ nginx.

В ответ мы можем получить большой список из полей NAME и DESCRIPTION. Первое является путем до источника.

Также мы можем отфильтровать список, попробовав найти официальный репозиторий:

podman search nginx | grep -i official

2. Запуск контейнера:

podman run <опции> <путь до образа>

Например:

podman run -d --name nginx -p 80:80 docker.io/library/nginx

* данная команда запустит контейнер с именем nginx, из образа docker.io/library/nginx (официального). Также мы прокинем внешний порт 80 в 80-й порт контейнера. Ключи, во многом, аналогичны тем, что используются в docker.

3. Список контейнеров:

podman ps

Команда покажет только запущенные контейнеры. Чтобы увидеть полный список, добавим опцию -a:

podman ps -a

4. Список образов:

podman images

5. Запустить / остановить / перезапустить.

Для запуска, остановки или перезапуска, соответственно, используем команды:

podman start <имя контейнера>

podman stop <имя контейнера>

podman restart <имя контейнера>

Автозапуск контейнеров

В отличие от docker, подман не работает как демон и в нем нет аналога опции --restart. По умолчанию, все запущенные контейнеры после перезагрузки не поднимутся обратно.

Для настройки автозапуска контейнера рекомендуется использовать команду:

podman generate systemd --name <имя контейнера>

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

Создадим каталог для размещения юнит-файлов в домашней директории пользователя и перейдем в него:

mkdir -p ~/.config/systemd/user

cd ~/.config/systemd/user

Создадим юнит-файл:

podman generate systemd --name nginx -f

* в конкретном примере мы настроим автозапуск для контейнера nginx.

Осталось разрешить автозапуск для юнита:

systemctl --user enable container-nginx

* обратите внимание на добавленную опцию --user (указывает на то, что юнит хранится в пользовательском каталоге), а также, имя юнита состоит из префикса container- и имени контейнера.

# Linux # Виртуализация # DevOps
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет