Сборка образа с вложением
На этом шаге мы научимся собирать Docker-образ и прикреплять к нему метаданные. Вложения (attachments) позволяют включать дополнительную информацию в образ, такую как данные о происхождении сборки (build provenance), реестр компонентов программного обеспечения (SBOM) или другие релевантные данные.
Сначала создадим простой Dockerfile. Перейдите в директорию ~/project
, если вы ещё не там.
cd ~/project
Теперь создадим файл Dockerfile
с помощью редактора nano
.
nano Dockerfile
Добавьте следующее содержимое в Dockerfile
:
FROM alpine:latest
CMD ["echo", "Hello, Docker Attachments!"]
Этот Dockerfile очень прост. Он использует образ alpine:latest
в качестве базового и определяет команду для вывода сообщения при запуске контейнера.
Сохраните файл и выйдите из nano
(нажмите Ctrl + X
, затем Y
, затем Enter
).
Далее нам нужно создать файл, который мы прикрепим к образу. Создадим простой текстовый файл attachment.txt
.
nano attachment.txt
Добавьте любое содержимое в attachment.txt
, например:
This is an example attachment for the Docker image.
It can contain any relevant metadata.
Сохраните файл и выйдите из nano
.
Теперь мы соберём Docker-образ и прикрепим файл attachment.txt
. Мы используем команду docker build
с флагом --attest
. Флаг --attest
позволяет указать вложение для включения в сборку образа. Формат: type=type,dest=destination,src=source
.
В нашем случае мы используем type=sbom
(Software Bill of Materials) в качестве типа, dest=/sbom/attachment.txt
как путь назначения внутри вложения и src=attachment.txt
как исходный файл в локальной файловой системе. Мы также присвоим образу тег my-attached-image:latest
.
Перед сборкой убедитесь, что у вас установлен необходимый плагин buildx. Если нет, возможно, потребуется его установить. Однако для базовых вложений должно хватить встроенного сборщика.
Соберём образ:
docker build -t my-attached-image:latest --attest type=sbom,dest=/sbom/attachment.txt,src=attachment.txt .
Символ .
в конце команды указывает на контекст сборки — текущую директорию (~/project
).
Вы увидите вывод, указывающий на то, что образ собирается, а вложение обрабатывается.
После завершения сборки вы можете проверить создание образа, выведя список локальных образов.
docker images
В списке должен отобразиться образ my-attached-image
.