使用映像定制器自定义Azure Linux 映像

映像定制器是一种开源工具,可修改现有 Azure Linux 映像以满足特定方案。 它使用 chroot 和环回阻止设备执行自定义,而无需启动虚拟机(VM),使该过程快速、可靠且易于集成到 CI/CD 工作流中。 这是用于生成正式Azure Linux 映像的相同技术。 有关完整的配置参考和高级用法,请参阅 映像定制器文档

Note

Azure 映像生成器(AIB)与映像定制器的集成目前尚不可用。 目前,你可以直接使用映像自定义器来自定义 Azure Linux 映像。

使用图像定制器,可以:

  • 添加或删除包。
  • 添加文件或目录。
  • 配置用户和系统设置。
  • 应用自定义分区布局。
  • 以多种格式生成输出图像。

映像定制器还支持嵌套自定义,因此可以进一步自定义已自定义的映像。 对于生成多个映像的团队,请考虑先创建共享自定义基础映像以减少维护开销。

Note

Azure Linux 4.0 现在位于 preview 中,严格限制为评估和测试目的。 它不适合生产用途。

先决条件

  • 安装在主机上的 Docker
  • 基础映像:任何 Azure Linux 映像(来自 Azure 市场,或你已在维护的映像)。
  • 配置文件:描述修改的 YAML 或 JSON 文件。

支持的主机系统

可以在以下设备上运行映像定制器:

  • Azure Linux
  • Ubuntu 22.04

使用图像定制器

映像定制器作为发布到 Microsoft 项目注册表(MCR)的容器运行。

列出可用标记

使用以下命令列出映像定制器容器的可用标记:

curl -s "https://mcr.azk8s.cn/v2/azurelinux/imagecustomizer/tags/list" | jq '.tags[]'

自定义图像

通过运行映像定制器容器,并将基础映像和配置文件挂载到该容器中,来自定义映像。 例如:

docker run --rm \
    --privileged \
    -v "<shared-dir>:z" \
    -v "/dev:/dev" \
    "mcr.azk8s.cn/azurelinux/imagecustomizer:latest" \
    imagecustomizer \
        --image-file <base-image.vhdx> \
        --config-file <config-file.yaml> \
        --output-image-format raw \
        --output-image-file <output-image.raw> \
        --build-dir "/tmp"

请替换以下值:

占位符 Description
<shared-dir> 包含基本映像和配置文件的目录的绝对路径。 自定义镜像也会写入此处。
<base-image.vhdx> 要修改的基础映像文件的路径。
<config-file.yaml> 用于描述你的修改内容的配置文件路径。
<output-image.raw> 自定义输出映像的路径。

有关详细信息,请参阅 图像定制器文档