gpt4 book ai didi

docker - 如何自动化 Multi-Arch-Docker 镜像构建

转载 作者:行者123 更新时间:2023-12-02 11:08:43 26 4
gpt4 key购买 nike

我在 github 上对一个 Nodejs 应用程序进行了 docker 化。我的 Dockerfile 基于官方的 Nodejs 镜像。官方的node-repo无缝支持多种架构(x86、amd64、arm)。这意味着我可以在不同的机器上构建完全相同的 Dockerfile,从而为相应的架构生成不同的镜像。

因此,我也尝试为我的应用程序无缝地提供相同的架构。但如何呢?我的目标是尽可能使其自动化。我知道理论上我需要创建一个 docker-manifest,它充当 docker-repo 并将最终用户 docker-clients 重定向到合适的镜像。

Docker-Hub 本身可以监控 github 存储库并启动自动构建。这将处理 amd64 镜像。但是剩下的架构呢?还有一个名为“TravisCI”的服务,我想它可以在 qemu 的帮助下处理 Arm 构建。然后我认为两个存储库都可以由 list 存储库静态引用。但这仍然留下了一些未实现的架构。

但是使用多种服务/方式构建同一个应用程序感觉不对。有谁知道这个问题更好、更完整的解决方案?它基本上是通过几台机器运行相同的 dockerfile 并将它们记录在 list 中。

最佳答案

从 Docker 18.02 CLI 开始,如果启用了客户端实验功能,您可以创建多架构 list 并将其推送到 docker 注册表。我能够使用 VSTS 并在构建后为多架构标签创建自定义构建任务。我遵循了这个模式。

docker manifest create --amend {multi-arch-tag} {os-specific-tag-1} {os-specific-tag-2}
docker manifest annotate {multi-arch-tag} {os-specific-tag-1} --os {os-1} --arch {arch-1}
docker manifest annotate {multi-arch-tag} {os-specific-tag-2} --os {os-2} --arch {arch-2}
docker manifest push --purge {multi-arch-tag}

顺便说一句,我在自定义 VSTS 任务中打包了适用于 Windows 和 Linux 的 18.02 docker CLI,因此不需要安装 docker。 Manifest 命令似乎不需要 docker 守护进程才能正常运行。

关于docker - 如何自动化 Multi-Arch-Docker 镜像构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47994152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com