Docker по-прежнему очень популярен, без сомнения. Но, как мы знаем в ИТ-индустрии, эволюция происходит быстро. Так что теперь мы услышим Buildah, Podman, CRI-O,Skopeo.
Если вы хотите провести аналогию – у нас есть различные виды ягод, такие как черные ягоды, голубые ягоды, малина, но когда-нибудь кто-нибудь решит выбрать голубые ягоды. Поэтому среди Buildah, Podman, CRI-O мы решили выбрать buildah. Зачем? Потому что это так же интересно, как и другие контейнерные платформы.
Давайте погрузимся в Buildah!
Buildah – это инструмент командной строки для создания образов Open Container Initiative (OCI). Его можно использовать с Docker, Podman, Kubernetes – какой бы ваш любимый контейнерный инструмент!
Buildah используется для создания, создания, управления, запуска образов контейнеров.
С помощью Buildah вы создаете рабочий контейнер из изображения или с нуля. Вы также можете создать изображение из рабочего контейнера или с помощью Dockerfile. Вы можете создавать изображения в формате OCI или восходящем формате Docker. Вы можете изменять и удалять контейнеры и изображения.
Самое интересное в Buildah заключается в том, что для работы ему не нужен демон. Так что скажите нет #bigfatdaemons. Отсутствие демона, в частности, дает искры, когда дело доходит до непрерывной интеграции и непрерывной доставки для создания контейнеров.
Отсутствие демона также означает, что вы можете исключить демон Докера с помощью Buildah для создания образов контейнеров. Но это не значит, что Buildah не может соединиться с Docker. Потому что с помощью Dockerfile вы можете создавать, управлять и запускать свой образ контейнера с помощью Buildah. Впечатляет, верно?
Пакеты для Buildah доступны для Fedora и CentOS. Вы можете легко установить их, используя менеджер пакетов вашего дистрибутива Linux. Мы собираемся перечислить некоторые из общих здесь:
Чтобы установить Buildah на Fedora, используйте
dnf install buildah -y
Чтобы установить Buildah на CentOS или RedHat:
yum install buildah -y
Чтобы установить Buildah в Ubuntu и Debian, вы можете использовать официальный PPA, предоставленный Project Atomic.
sudo apt update sudo apt install -y software-properties-common sudo add-apt-repository -y ppa:projectatomic/ppa sudo apt install buildah
Как только Buildah установлен, пришло время поработать с ним.
Вот несколько основных команд для начала сборки.
Узнать версию Buildah.
buildah --version
Самая первоначальная задача – извлечь образ контейнера из общедоступных или частных репозиториев. Чтобы вытащить изображение buildah использует переменную from. Переменная ‘from’ такая же, как она используется в Dockerfile. Разница в том, что в Docker мы указываем переменную «from» в Dockerfile, где в Buildah мы передаем переменную через командную строку.
buildah from ubuntu
В приведенной выше команде Ubuntu – наш образ контейнера. После успешного извлечения образа на основе Ubuntu в конце вывода вы увидите «ubuntu-working-container».
После того, как вы знаете, что вы успешно удалили изображение, теперь вы можете захотеть увидеть список изображений, которые вы извлекли. но до этого вам может быть интересно, «где хранятся эти изображения?». Вытащенное изображение сохраняется на самом хосте.
# buildah images IMAGE NAME IMAGE TAG IMAGE ID CREATED AT SIZE docker.io/library/ubuntu latest 94e814e2efa8 Mar 12, 2019 00:20 91.4 MB docker.io/library/fedora
Если вы уже знакомы с командами Docker, возможно, вы заметили сходство команд Docker и Buildah. Например, в Docker для просмотра списка вытащенных изображений мы используем команду «docker images».
Вот команда, чтобы увидеть список запущенных контейнеров. В Buildah, как только полностью извлекается изображение контейнера, этот контейнер начинает работать. Если сравнивать с Docker, после вытягивания образа нам нужно запустить образ с помощью ‘docker run’, и тогда запускается только контейнер.
CONTAINER ID BUILDER IMAGE ID IMAGE NAME CONTAINER NAME 1063320d2dc0 * 94e814e2efa8 docker.io/library/ubuntu:latest ubuntu-working-container 978a399e0aa7 * d09302f77cfc docker.io/library/fedora:latest fedora-working-container
Если вы хотите очистить и удалить все запущенные контейнеры, выполните команду ниже с осторожностью. Потому что, как только вы выполните команду, ваши контейнеры будут удалены. Привилегия, которую мы получаем в buildah по сравнению с Docker, заключается в том, что Docker не позволяет нам удалять работающий контейнер, а Buildah – нет. При использовании Docker сначала мы должны остановить контейнер, а затем только мы можем удалить изображение.
buildah rm --all
Если вы застряли с какой-то командой, есть опция –help.
# buildah --help
Давайте рассмотрим некоторые варианты использования Buildah, чтобы начать с практической реализации, мы начнем с простого. И как только вы найдете темп с Buildah, вы можете наполнить свое творчество и делать интересные вещи.
Давайте попробуем то, что вы только что узнали, с примером проекта Buildah.
Как вы думаете, что нужно для того, чтобы веб-сервер Apache работал внутри контейнера?
Конечно, изображение, работающий контейнер и? Ну, главное, что нам нужно – это установить пакет httpd внутри контейнера. Ой! Как мы это делаем ? Не волнуйтесь. Мы расскажем вам это.
Давайте сначала потянем образ дистрибутива Linux. Выберите тот, который ваш любимый. Мы вытащили базовый образ CentOS.
# buildah from centos
Теперь установите httpd внутри контейнера CentOS. Вы можете сделать это с помощью этой команды:
# buildah run centos-working-container yum install httpd -y
Вы увидите выход , как этот.
Мы установили пакет httpd, даже не заходя внутрь контейнера. Это похоже на настройку деталей вашего велосипеда, даже не заходя в гараж. Вы можете увидеть в выводе команды выше, пакет был установлен перед нами. Buildah не обманывает 😉.
Теперь давайте создадим собственный файл index.html.
echo "Linux Handbook is interesting !" > index.html
Скопируйте пользовательский файл index.html в путь к каталогу /var/www/html
buildah copy centos-working-container index.html /var/www/html/index.html 4e955fea0268518cbaa500409dfbec88f0ecebad28d84ecbe250baed97dba889
Вам должно быть интересно, откуда взялся /var/www/html? И почему мы скопировали файл index.html в этот путь каталога?
Когда мы устанавливаем пакет httpd, создается каталог /var/www/html. /var/www/html это просто корневая папка веб-сервера по умолчанию.
Чтобы запустить контейнер, нам нужно настроить точку входа для контейнера.
# buildah config --entrypoint "/usr/sbin/httpd -DFOREGROUND" centos-working-container
Параметр «-DFOREGROUND» используется вместе с «/usr/sbin/httpd» для запуска httpd. «-DFOREGROUND» делает так, что процесс httpd/apache запускается на переднем плане вместо фона. Преимущество процесса httpd, НЕ работающего в фоновом режиме, состоит в том, что вы можете видеть журналы отладки на консоли. Если мы не используем опцию «-DFOREGROUND», сервер apache запустится и сразу после этого будет остановлен.
Теперь нам нужно сохранить все, что мы сделали внутри контейнера. Совершить это сделает для нас.
buildah commit centos-working-container Linux-AndreyEx
Образ Linux-AndreyEx доступен, и вы можете отправить его в реестр, чтобы использовать его.
# buildah images IMAGE ID IMAGE NAME CREATED AT SIZE 9110ae7f579f docker.io/library/centos:latest Mar 31, 2019 14:36 234.7 MB 49bd5ec5be71 docker.io/library/Linux-AndreyEx:latest Apr 4, 2019 17:28 427.7 MB
Итак, все настроено, чтобы испачкать руки с Buildah?