我正在尝试构建确实针对特定图像构建的CI管道。但是,在CI文件中,我找不到指定图像平台的方法。
stages:
- build
- deploy
build_j:
image: customServer/debian/jessy
我检查了Docker Images doc和this,但找不到任何示例。另一种方法可能是显式提取图像并使用脚本运行命令。
docker pull debian:jessy -platform i386
答案 0 :(得分:1)
由于Docker映像的多体系结构/平台标签具有不同的摘要,因此您可以pull a Docker image using its digest(而不是使用标签)提取所需的体系结构/平台。
< / p>
以下是Docker Hub中Docker映像(Ubuntu)的多体系结构/平台标签的示例:
如您所见, 20.04 是一个多体系结构标签,并且标签中每个体系结构都有不同的摘要。
如果您运行命令std::string rainbow[] = {"red", "orange", "yellow", "blue", "green", "indigo", "violet"};
for (int i = 0; i < sizeof rainbow/sizeof *rainbow; i++) {
RandomOne.setElement(i, rainbow[i]);
}
它将拉动所有架构。
但是命令
docker pull ubuntu:20.04
只会拉docker pull ubuntu@sha256:55e5613c8c7bcd8044aaf09d64d20518964a0d7a6e41af129f95b731301c2659
。
我尝试过,可以在linux/arm/v7
中使用摘要:
.gitlab-ci.yml
答案 1 :(得分:0)
使用新标签上的图像摘要创建发行版
Docker支持不可变的图像标识符,我们采用了这种最佳实践来更新我们的云部署图像。
标记新图像时,我们还以编程方式在构建图像摘要时对其进行检索,并创建发行说明以将该摘要有效地传达给用户。
这样可以保证服务的每个实例都运行完全相同的代码。
即使未标记(或不再标记)该图像,您也可以回滚到该图像的早期版本。如果在部署过程中推送新映像,这甚至可以防止出现竞争情况。请参见和Documentation。