6.4. 使用可重复生成的容器构建
您可以使用 --source-date-epoch 和- 选项构建可重复生成的容器镜像,将 rewrite- timestampARG SOURCE_DATE_EPOCH 添加到 ContainerFile。
流程
在运行
Buildah命令时设置这些选项。例如,要从 Containerfile 构建镜像,并将所有时间戳强制到特定时间点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行带有一致时间戳的
podman build命令,以创建可重复生成的镜像:# Set a consistent timestamp using the last Git commit date export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)
# Set a consistent timestamp using the last Git commit date export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用指定时间戳构建镜像:
podman build --source-date-epoch=${SOURCE_DATE_EPOCH} --rewrite-timestamp -t my-reproducible-app .podman build --source-date-epoch=${SOURCE_DATE_EPOCH} --rewrite-timestamp -t my-reproducible-app .Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
构建后,再次运行可重复生成的命令。如果构建真正可重复生成,
buildah inspect命令应显示相同的镜像摘要。buildah bud --build-arg --source-date-epoch=${SOURCE_DATE_EPOCH} \ --rewrite-timestamp \ -f Containerfile \ -t my-reproducible-image-2 .buildah bud --build-arg --source-date-epoch=${SOURCE_DATE_EPOCH} \ --rewrite-timestamp \ -f Containerfile \ -t my-reproducible-image-2 .Copy to Clipboard Copied! Toggle word wrap Toggle overflow 比较摘要:
buildah inspect --format '{{.Digest}}' my-reproducible-image buildah inspect --format '{{.Digest}}' my-reproducible-image-2buildah inspect --format '{{.Digest}}' my-reproducible-image buildah inspect --format '{{.Digest}}' my-reproducible-image-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow