2.9.26.6.2 Packer
Установка Packer
Установка Docker
Подготовка шаблона Packer
Инициализация и проверка
Создание и проверка образа
Окружение
- Версия ОС: 7.3
- Конфигурация ОС: Рабочая станция, Сервер графический, Сервер минимальный
- Редакция ОС: Стандартная
- Архитектура: x86_64
- Версия ПО: packer-1.14.3-1
Packer — это инструмент, который позволяет параллельно создавать образы компьютеров для нескольких платформ на основе единой исходной конфигурации. Packer позволяет запускать полностью настроенные вычислительные машины быстрее, что ускоряет как промышленную эксплуатацию, так и процесс разработки.
Инструмент создает идентичные образы для различных платформ. Все операции по установке и настройке программного обеспечения выполняются на этапе сборки образа, благодаря чему ошибки конфигурации обнаруживаются на ранней стадии, а не после запуска экземпляра. Сформированный образ может быть подвергнут тестированию до начала развертывания, что гарантирует корректное функционирование всех экземпляров, созданных на его основе.
Установка Packer
Для установки программы через терминал выполните следующую команду (потребуются права администратора):
sudo dnf install packer
Для проверки выполните команду:
packer version
Установка Docker
Подробную информацию по установке docker и настройке доступа к среде контейнеризации см. в нашей инструкции «Установка и настройка docker».
Подготовка шаблона Packer
Шаблон Packer — это файл конфигурации, который определяет образ и способ его сборки.
Шаблон состоит из трёх основных блоков:
-
блок
packer— определяет требуемые плагины и их версии; -
блок
source— настраивает источник, который будет использоваться для создания образа; -
блок
build— связывает источник с действиями и определяет финальный результат.
Шаблоны Packer используют язык конфигурации HCL.
Создайте новый каталог с именем packer_tutorial. Этот каталог будет содержать шаблон Packer.
mkdir packer_tutorial
Перейдите в каталог:
cd packer_tutorial
Создайте файл docker-nginx.pkr.hcl:
nano docker-nginx.pkr.hcl
Добавьте шаблон и сохраните файл:
packer {
required_plugins {
docker = {
version = ">= 1.0.8"
source = "github.com/hashicorp/docker"
}
}
}
source "docker" "nginx" {
image = "registry.red-soft.ru/ubi7/nginx:latest"
commit = true
}
build {
name = "learn-packer"
sources = [
"source.docker.nginx"
]
}
Это шаблон Packer, который можно использовать для создания образа nginx на основе registry.red-soft.ru/ubi7/nginx:latest.
Инициализация и проверка
В следующем примере устанавливаются плагины, указанные в шаблоне из текущего каталога:
packer init .
Пример вывода команды:
Installed plugin github.com/hashicorp/docker v1.1.1 in "/home/user/.config/packer/plugins/github.com/hashicorp/docker/packer-plugin-docker_v1.1.1_x5.0_linux_amd64"
Packer загрузит модуль Packer Docker версии выше, чем 1.0.8.
После успешной инициализации необходимо проверить корректность конфигурационного файла. Выполните команду:
packer validate .
Пример вывода команды:
The configuration is valid.
Создание и проверка образа
Команда packer build — основная команда, которая запускает процесс сборки образа на основе шаблона. Различные сборки, указанные в шаблоне, выполняются параллельно, если не указано иное.
Создайте образ с помощью команды packer build:
packer build docker-nginx.pkr.hcl
Пример вывода команды:
learn-packer.docker.nginx: output will be in this color. ==> learn-packer.docker.nginx: Creating a temporary directory for sharing data... ==> learn-packer.docker.nginx: Pulling Docker image: registry.red-soft.ru/ubi7/nginx:latest ==> learn-packer.docker.nginx: latest: Pulling from ubi7/nginx ==> learn-packer.docker.nginx: Digest: sha256:dc1d897f6649dd749eda24f6cef97576966c1815adea3edad44bb39efbb400b4 ==> learn-packer.docker.nginx: Status: Image is up to date for registry.red-soft.ru/ubi7/nginx:latest ==> learn-packer.docker.nginx: registry.red-soft.ru/ubi7/nginx:latest ==> learn-packer.docker.nginx: Starting docker container... ==> learn-packer.docker.nginx: Run command: docker run -v /home/user/.config/packer/tmp595989776:/packer-files -d -i -t --entrypoint=/bin/sh -- registry.red-soft.ru/ubi7/nginx:latest ==> learn-packer.docker.nginx: Container ID: abd0e716576e8b8ca19706af8fc0ee7763a0f2c55d4b51bd5ea365099e91704d ==> learn-packer.docker.nginx: Committing the container ==> learn-packer.docker.nginx: Image ID: sha256:2b4007455568d2bc1146d95b2d62d5456fbf9360b7dab4f50bad3feaafb57903 ==> learn-packer.docker.nginx: Killing the container: abd0e716576e8b8ca19706af8fc0ee7763a0f2c55d4b51bd5ea365099e91704d Build 'learn-packer.docker.nginx' finished after 1 second 118 milliseconds. ==> Wait completed after 1 second 118 milliseconds ==> Builds finished. The artifacts of successful builds are: --> learn-packer.docker.nginx: Imported Docker image: sha256:2b4007455568d2bc1146d95b2d62d5456fbf9360b7dab4f50bad3feaafb57903
Перечислите все образы Docker, чтобы убедиться, что Packer успешно создал образ. Packer создает копию образа с новым ID.
docker images
Пример вывода команды:
IMAGE ID DISK USAGE CONTENT SIZE EXTRA registry.red-soft.ru/ubi7/nginx:latest a2ba0e3c9ed2 401MB 0B U
Запустите контейнер из созданного образа:
docker run -d -p 8000:80 --name test-nginx a2ba0e3c9ed2
Проверьте статус контейнера:
docker ps -a
Пример вывода команды:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 89f836913f32 a2ba0e3c9ed2 "container-entrypoin…" 30 seconds ago Up 29 seconds 8080/tcp, 8443/tcp, 0.0.0.0:8000->80/tcp, [::]:8000->80/tcp test-nginx
Более подробная информация о работе Packer содержится в официальной документации.
Дата последнего изменения: 04.05.2026
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.