Как установить 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 pull
podman будет связываться с этими реестрами, начиная с первого в указанном порядке. Сохраните изменения и выйдите из файла.
Поиск изображений
Прежде чем извлекать образы контейнеров, целесообразно поискать их доступность в различных реестрах.
Например
$ sudo podman search nginx
В результате вы получите обширную информацию, включая имя реестра, имя образа и краткое описание.
Вход в реестр
Прежде чем вы начнете извлекать или отправлять образы, вам необходимо войти в реестр. В приведенном ниже примере я вхожу в свою учетную запись Redhat, которая, по сути, дает мне доступ к реестру.
$ sudo podman login registry.access.redhat.com
Для выхода из реестра выполните команду:
$ sudo podman logout registry.access.redhat.com
Получение изображения
Чтобы вытащить изображение, используйте синтаксис:
$ sudo podman pull image_name
Например, чтобы получить официальные образы сборки Nginx, выполните команду:
$ sudo podman pull docker.io/library/nginx
Попробуем вытащить другое изображение. Мы извлечем официальный образ MongoDB следующим образом.
$ sudo podman pull docker.io/library/mongo
Листинг изображения
Чтобы вывести список всех изображений, введите команду.
$ sudo podman images
Создать контейнер из изображения
Теперь, когда наши изображения находятся в системе 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
Листинг контейнеров
В этом разделе мы рассмотрим различные команды, которые вы можете использовать с контейнерами.
Чтобы проверить контейнеры, которые в настоящее время работают, выполните команду
$ sudo podman ps
Выходные данные представлены в столбцах, которые содержат такую информацию, как ID контейнера, имя IMAGE, команда, запускающая контейнер, дата создания и статус.
Чтобы перечислить все контейнеры, включая те, которые вышли из запуска:
$ sudo podman ps -a
Остановка контейнера
Чтобы остановить контейнер, используйте синтаксис
$ sudo podman stop CONTAINER_ID
ИЛИ
$ sudo podman stop container_name
В приведенном ниже примере я остановил первый указанный контейнер, используя его идентификатор.
$ sudo podman stop 9daeaabdfdfc
Проверить, остановлен ли контейнер, можно с помощью podman ps
команды. Мы ясно видим, что после остановки изображения у нас работает только 1 изображение.
Команда podman ps -a
выведет список обоих контейнеров, составляющих только что остановленный контейнер.
$ sudo podman ps -a
Запуск контейнера
Чтобы запустить контейнер, используйте синтаксис:
$ sudo podman start CONTAINER_ID
или
$ sudo podman start container_name
Например, чтобы запустить webserv1, запустите:
$ sudo podman start webserv1
Доступ к оболочке контейнера
Доступ к оболочке контейнера лучше всего продемонстрировать с помощью контейнера операционной системы.
Здесь мы собираемся загрузить или извлечь образ Ubuntu:
$ sudo podman pull docker.io/library/ubuntu
Из изображения мы создадим или запустим контейнер и получим доступ к оболочке с помощью -it
опции.
$ sudo podman run --name ubuntu -it docker.io/library/ubuntu /bin/bash
- -i, –interactive Оставить STDIN открытым, даже если он не прикреплен
- -t, –tty Назначить псевдо-телетайп. По умолчанию — false
Проверить журналы контейнера
Чтобы проверить журналы контейнера, используйте синтаксис:
$ sudo podman logs container_name
Например:
$ sudo podman logs webserv2
Показать статистику контейнера
Чтобы отобразить статистику всех запущенных контейнеров, запустите:
$ sudo podman stats
Осмотрите контейнер
Чтобы распечатать сложные детали о контейнере, используйте опцию проверки:
$ sudo podman inspect webserv2
Это распечатает длинный вывод в формате JSON.
Используйте параметр —format для фильтрации вывода. Например, чтобы распечатать IP-адрес контейнера webserv2, запустите
$ sudo podman inspect webserv2 --format '{{.NetworkSettings.IPAddress}}'
Затем вы можете ввести дополнительную информацию об IP, например, используя curl для получения заголовков HTTP.
$ curl -I ip-address
Удаление контейнера
Чтобы полностью удалить или удалить контейнер, сначала остановите контейнер, если он работает, и, наконец, удалите его. В этом примере мы остановили и удалили контейнер websev1.
$ sudo podman stop webserv1
Затем снимите остановившуюся емкость.
$ sudo podman rm webserv1
Удаление изображения
Чтобы удалить образ, сначала убедитесь, что вы остановили и удалили все контейнеры, которые были запущены из образа. Затем используйте rmi
вариант, как показано.
$ sudo podman rmi image_name
Например, чтобы удалить образ ubuntu, выполните команду:
$ sudo podman rmi docker.io/library/ubuntu
Установите последнюю версию 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.