ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Начало работы с Buildah

Начало работы с Buildah

Docker по-прежнему очень популярен, без сомнения. Но, как мы знаем в ИТ-индустрии, эволюция происходит быстро. Так что теперь мы услышим Buildah, Podman, CRI-O,Skopeo.

Если вы хотите провести аналогию – у нас есть различные виды ягод, такие как черные ягоды, голубые ягоды, малина, но когда-нибудь кто-нибудь решит выбрать голубые ягоды. Поэтому среди Buildah, Podman, CRI-O мы решили выбрать buildah. Зачем? Потому что это так же интересно, как и другие контейнерные платформы.

Давайте погрузимся в Buildah!

 

Что такое Buildah?

Buildah – это инструмент командной строки для создания образов Open Container Initiative (OCI). Его можно использовать с Docker, Podman, Kubernetes – какой бы ваш любимый контейнерный инструмент!

Buildah используется для создания, создания, управления, запуска образов контейнеров.

С помощью Buildah вы создаете рабочий контейнер из изображения или с нуля. Вы также можете создать изображение из рабочего контейнера или с помощью Dockerfile. Вы можете создавать изображения в формате OCI или восходящем формате Docker. Вы можете изменять и удалять контейнеры и изображения.

Самое интересное в Buildah заключается в том, что для работы ему не нужен демон. Так что скажите нет #bigfatdaemons. Отсутствие демона, в частности, дает искры, когда дело доходит до непрерывной интеграции и непрерывной доставки для создания контейнеров.

Отсутствие демона также означает, что вы можете исключить демон Докера с помощью Buildah для создания образов контейнеров. Но это не значит, что Buildah не может соединиться с Docker. Потому что с помощью Dockerfile вы можете создавать, управлять и запускать свой образ контейнера с помощью Buildah. Впечатляет, верно?

 

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

Пакеты для 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.

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, вы можете наполнить свое творчество и делать интересные вещи.

Создание изображения контейнера веб-сервера Apache [Hands On]

Давайте попробуем то, что вы только что узнали, с примером проекта 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?

Exit mobile version