Руководство для начинающих по контейнерам Podman в Linux
Говоря о будущем технологий, многие опытные специалисты знают, что виртуализация и контейнеризация — это именно тот путь. Они обеспечивают большую безопасность приложений и служб, и ими легко управлять через другие службы, которые позволяют создавать моментальные снимки, шаблоны и более широкие возможности настройки, чем при модели «один сервер на приложение». Однако не всегда до конца ясно, как следует начинать работу с виртуализацией и контейнеризацией. Мы уже много раз рассматривали виртуализацию в Linux, Windows и macOS, но контейнеризация, как правило, представляет собой нечто иное. В этой статье мы представляем вам руководство для начинающих по Podman в Linux — отличному инструменту для контейнеризации.
Что такое контейнеры?
Контейнеры — это, по сути, небольшие виртуальные машины, но только для приложений. Они используют во многом одни и те же концепции и обладают одинаковыми функциями безопасности и простоты использования, но они намного меньше и позволяют легко создавать образы и распространять приложения. Это во многом то, на чем основаны Flatpaks и Snaps. Вы можете начать видеть параллели: одна программа, несколько приложений, работающих в изолированных средах.
Что такое Подман?
Многие из нас слышали о Docker, лидере контейнерных движков. Podman — это аналогичный контейнерный движок, который использует структуру, очень похожую на Docker, но с парой ключевых отличий.
Во-первых, Podman не имеет демонов, тогда как Docker полагается на демона. Это означает, что контейнеры Podman могут работать без разрешений корневого уровня, что обеспечивает большую безопасность и гибкость. Контейнер, работающий на уровне пользователя, означает, что пользователи могут видеть только свои контейнеры и никого больше. Podman требует меньше системных ресурсов благодаря более простой архитектуре, что делает работу с ним более приятной.
Архитектура без демонов приводит к появлению так называемых контейнеров без корней. Эта концепция основана на предыдущем отличии, но фокусируется на безопасности. Если злоумышленник скомпрометирует ваш контейнер и по какой-либо причине сумеет сбежать, у него будут только базовые права пользователя, а не права root. Для этого требуется дополнительная настройка, и на данный момент есть некоторые недостатки, но на это стоит обратить внимание.
Установка Подмана
Для большинства дистрибутивов Podman находится в основных репозиториях, что делает его простой командой установки:
# Debian/Ubuntu sudo apt install podman # Fedora/CentOS/Redhat sudo dnf install podman # Arch Linux sudo pacman -S podman # OpenSUSE sudo zypper install podman # Gentoo sudo emerge app-emulation/podman
Использование Подмана
Синтаксис команды для запуска контейнера Podman может показаться немного запутанным, но как только вы начнете в нем разбираться, вы начнете распознавать шаблоны. В проекте есть образец контейнера, который вы можете запустить, введя эту команду в терминал:
podman run -dt -p 8080:8080/tcp -e HTTPD_VAR_RUN=/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \ -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \ -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \ registry.fedoraproject.org/f29/httpd /usr/bin/run-httpd
Это приведет к извлечению некоторых изображений из указанного реестра, и как только это будет сделано, вы получите длинный номер. Вы увидите это позже, когда проверите запуск контейнеров.
Чтобы проверить запущенные контейнеры Podman, введите следующую команду:
podman ps
Вы увидите контейнер, который вы запустили ранее. Это подтверждает, что он работает. Однако, если вы хотите специально просмотреть веб-страницу, на которой работает Apache, вы выполните следующую команду:
curl http://0.0.0.0:8080
Замена 0.0.0.0
любым IP-адресом, показанным при запуске команды podman ps
. Вы должны получить кучу искаженного HTML, но если вы посмотрите прямо вверх, вы заметите синтаксис заголовка в HTML и поймете, что он работает.
<title>Test Page for the Apache HTTP Server on Fedora</title>
Изображения по запросу Подман
Что хорошо в Podman, так это использование изображений. Вы можете искать другие изображения, например httpd
или другие программы, которые вам интересны.
podman search CONTAINERNAME
Я искал vncserver
и вот что получил. Как видите, вариантов много, и все зависит от ваших личных предпочтений.
Чтобы получить одно из этих изображений, запустите команду podman pull
.
podman pull CONTAINERNAME
Рекомендуется получить полный URL-адрес реестра контейнеров, чтобы он был точным. Например, команда, которую я запускаю:
podman pull docker.io/michaelaboeckler/vncserver
вместо того, чтобы просто запускать podman pull vncserver
, потому что могут быть изображения, которые мне не нужны, и которые будут выбраны вместо того, который мне нужен.
Вы также можете проверить свои изображения с помощью этой команды:
podman images
И остановите контейнеры с помощью этой команды:
podman stop -l
Флаг -l
означает, что он остановит последний запущенный контейнер, но вы также можете использовать флаг -a
, чтобы остановить все контейнеры.
Возможно, вы заметили, что Podman также может искать образы контейнеров на docker.io. Это связано с тем, что команды Podman и команды Docker по сути одинаковы — настолько, что иногда рекомендуется использовать псевдоним команды docker
для podman
следующим образом:
alias docker='podman'
Это означает, что каждый раз, когда вы вводите docker
, ваш компьютер все равно запускает команду podman
.
Безродный подмен
Чтобы настроить вашу систему для контейнеров без root, необходимо выполнить ряд настроек, но на их странице Github есть отличная документация.
Надеюсь, вам понравился этот учебник по Podman, замечательному маленькому инструменту, который позволит вам запускать контейнеры без демонов и root, чтобы ваша система была компактной, аккуратной и безопасной. Если да, обязательно ознакомьтесь с другим нашим контентом для контейнеров, например с нашими руководствами по запуску Ubuntu в контейнере в ChromeOS, копированию контейнеров Docker на другой хост и ограничению ресурсов контейнера Docker.