Как установить Podman на Debian 11 | Debian 10

Как установить Podman на Debian 11 | Debian 10

 

Разработанный RedHat, Podman — это бесплатный контейнерный движок без демонов с открытым исходным кодом, призванный заменить популярный движок времени выполнения Docker. Как и Docker, он упрощает создание, запуск, развертывание и совместное использование приложений с использованием образов контейнеров и контейнеров OCI (Open Container Initiative). Podman использует пространства имен пользователей и сети, и по сравнению с Docker, Podman считается более изолированным и безопасным. Большинство команд в Docker будут работать в Podman. и поэтому, если вы знакомы с запуском команд Docker, использовать podman будет очень просто.

В этом руководстве мы узнаем, как установить podman на Debian 11 Bullseye.

Установите Podman на Debian 11

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

Сначала обновите списки пакетов:

$ sudo apt update

Далее устанавливаем двигатель контейнера podman следующим образом:

$ sudo apt install podman

Когда будет предложено продолжить, введите «Y» и нажмите ENTER.

Чтобы проверить установленную версию Podman, запустите:

$ podman --version

Чтобы получить более подробную информацию о движке контейнеров podman, выполните команду:

$ sudo podman info

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

Настроить реестры Podman

Файл реестра registry.conf— это файл конфигурации, в котором указаны реестры контейнеров, которые будут использоваться всякий раз, когда вы хотите отправить или получить изображение. Полный путь к файлу — /etc/containers/registries.conf. Существуют различные реестры контейнеров, включая Docker hub, Quay.io, RedHat и многие другие.

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

# sudo /etc/containers/registries.conf

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

unqualified-search-registries = [ 'registry.access.redhat.com', 'registry.redhat.io', 'docker.io']

При запуске команды podman searchили podman pullpodman будет связываться с этими реестрами, начиная с первого в указанном порядке. Сохраните изменения и выйдите из файла.

Поиск изображений

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

Например

$ sudo podman search nginx

Как установить Podman на Debian 113

В результате вы получите обширную информацию, включая имя реестра, имя образа и краткое описание.

Вход в реестр

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

$ sudo podman login registry.access.redhat.com
Как установить Podman на Debian 113

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

$ sudo podman logout registry.access.redhat.com

Получение изображения

Чтобы вытащить изображение, используйте синтаксис:

$ sudo podman pull image_name

Например, чтобы получить официальные образы сборки Nginx, выполните команду:

$ sudo podman pull docker.io/library/nginx
Как установить Podman на Debian 113

Попробуем вытащить другое изображение. Мы извлечем официальный образ MongoDB следующим образом.

$ sudo podman pull docker.io/library/mongo
Как установить Podman на Debian 113

Листинг изображения

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

$ sudo podman images
Как установить Podman на Debian 113

Создать контейнер из изображения

Теперь, когда наши изображения находятся в системе Debian, мы можем запустить контейнер, используя показанный синтаксис. Параметр -d запускает контейнер в фоновом режиме, а --nameпараметр указывает собственное имя для контейнера.

$ sudo podman run -d  --name container_name  image

Например, чтобы запустить в фоновом режиме контейнер с именем webserv1 из образа Nginx, выполните команду:

$ sudo podman run  -d --name webserv1 docker.io/library/nginx

Вы можете запускать несколько контейнеров из одного образа. Давайте запустим другой контейнер с именем webserv2 из того же образа Nginx.

$ sudo podman run -d --name webserv2  docker.io/library/nginx

Как установить Podman на Debian 113

Листинг контейнеров

В этом разделе мы рассмотрим различные команды, которые вы можете использовать с контейнерами.

Чтобы проверить контейнеры, которые в настоящее время работают, выполните команду

$ sudo podman ps

Выходные данные представлены в столбцах, которые содержат такую ​​информацию, как ID контейнера, имя IMAGE, команда, запускающая контейнер, дата создания и статус.

Как установить Podman на Debian 113

Чтобы перечислить все контейнеры, включая те, которые вышли из запуска:

$ sudo podman ps -a

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

Чтобы остановить контейнер, используйте синтаксис

$ sudo podman stop CONTAINER_ID

ИЛИ

$ sudo podman stop container_name

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

$ sudo podman stop 9daeaabdfdfc

Проверить, остановлен ли контейнер, можно с помощью podman ps команды. Мы ясно видим, что после остановки изображения у нас работает только 1 изображение.

Как установить Podman на Debian 113

Команда podman ps -aвыведет список обоих контейнеров, составляющих только что остановленный контейнер.

$ sudo podman ps -a

Как установить Podman на Debian 113

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

Чтобы запустить контейнер, используйте синтаксис:

$ sudo podman start CONTAINER_ID

или

$ sudo podman start container_name

Например, чтобы запустить webserv1, запустите:

$ sudo podman start webserv1

Как установить Podman на Debian 113

Доступ к оболочке контейнера

Доступ к оболочке контейнера лучше всего продемонстрировать с помощью контейнера операционной системы.

Здесь мы собираемся загрузить или извлечь образ Ubuntu:

$ sudo podman pull docker.io/library/ubuntu

Из изображения мы создадим или запустим контейнер и получим доступ к оболочке с помощью -itопции.

$ sudo podman run --name ubuntu -it docker.io/library/ubuntu  /bin/bash

Как установить Podman на Debian 113

  • -i, –interactive Оставить STDIN открытым, даже если он не прикреплен
  • -t, –tty Назначить псевдо-телетайп. По умолчанию — false

Проверить журналы контейнера

Чтобы проверить журналы контейнера, используйте синтаксис:

$ sudo podman logs container_name

Например:

$ sudo podman logs webserv2

Как установить Podman на Debian 113

Показать статистику контейнера

Чтобы отобразить статистику всех запущенных контейнеров, запустите:

$ sudo podman stats

Как установить Podman на Debian 113

Осмотрите контейнер

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

$ sudo podman inspect webserv2

Это распечатает длинный вывод в формате JSON.

Как установить Podman на Debian 113

Используйте параметр —format для фильтрации вывода. Например, чтобы распечатать IP-адрес контейнера webserv2, запустите

$ sudo podman inspect webserv2 --format '{{.NetworkSettings.IPAddress}}'

Затем вы можете ввести дополнительную информацию об IP, например, используя curl для получения заголовков HTTP.

$ curl -I ip-address

Как установить Podman на Debian 113

Удаление контейнера

Чтобы полностью удалить или удалить контейнер, сначала остановите контейнер, если он работает, и, наконец, удалите его. В этом примере мы остановили и удалили контейнер websev1.

$ sudo podman stop webserv1

Затем снимите остановившуюся емкость.

$ sudo podman rm webserv1

Как установить Podman на Debian 113

Удаление изображения

Чтобы удалить образ, сначала убедитесь, что вы остановили и удалили все контейнеры, которые были запущены из образа. Затем используйте rmiвариант, как показано.

$ sudo podman rmi image_name

Например, чтобы удалить образ ubuntu, выполните команду:

$ sudo podman rmi  docker.io/library/ubuntu

Как установить Podman на Debian 113

Установите последнюю версию Podman — скомпилируйте из исходников

Вы можете протестировать последнюю версию Podman, установив разрабатываемую версию из исходников.

01. Сборка и запуск зависимостей

sudo apt-get install \
   btrfs-progs \
   git \
   golang-go \
   go-md2man \
   iptables \
   libassuan-dev \
   libbtrfs-dev \
   libc6-dev \
   libdevmapper-dev \
   libglib2.0-dev \
   libgpgme-dev \
   libgpg-error-dev \
   libprotobuf-dev \
   libprotobuf-c-dev \
   libseccomp-dev \
   libselinux1-dev \
   libsystemd-dev \
   pkg-config \
   runc \
   make \
   libapparmor-dev \
   gcc \
   cmake \
   uidmap \
   libostree-dev 

02. Установите Conmon

Conmon — это монитор контейнера, который представляет собой небольшую программу на C, задача которой — наблюдать за основным процессом контейнера.

git clone https://github.com/containers/conmon
cd conmon
make
sudo make podman
sudo cp /usr/local/libexec/podman/conmon  /usr/local/bin/

03. Установите runc

Чтобы установить последнюю версию runc

git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc
make BUILDTAGS="selinux seccomp"
sudo cp runc /usr/bin/runc

03. Установите контейнерный сетевой интерфейс (CNI)

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

git clone https://github.com/containernetworking/plugins.git $GOPATH/src/github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins
./build_linux.sh
sudo mkdir -p /usr/libexec/cni
sudo cp bin/* /usr/libexec/cni

Настроить сеть

sudo mkdir -p /etc/cni/net.d
curl -qsSL https://raw.githubusercontent.com/containers/libpod/master/cni/87-podman-bridge.conflist | sudo tee /etc/cni/net.d/99-loopback.conf

Добавить конфигурацию

sudo mkdir -p /etc/containers
sudo curl -L -o /etc/containers/registries.conf https://src.fedoraproject.org/rpms/containers-common/raw/main/f/registries.conf
sudo curl -L -o /etc/containers/policy.json https://src.fedoraproject.org/rpms/containers-common/raw/main/f/default-policy.json

04. Установите Podman из исходного кода

git clone https://github.com/containers/podman/ $GOPATH/src/github.com/containers/podman
cd $GOPATH/src/github.com/containers/podman
make
sudo make install
$ podman --version
podman version 4.0.0-dev

Вывод

Мы надеемся, что заложили прочную основу на вашем пути к тому, чтобы стать лучшим профессионалом в использовании podman для создания контейнеров и управления ими. Это руководство проведет вас через установку podman на Debian 11 Buster.