docker 不同架构镜像融合问题解决

1、背景

docker 作为目前容器的标准之一,但是对于多种架构的平台的混合编译支撑不是很好。因此衍生了镜像融合,分别将多种不同的架构构建好,然后将镜像进行融合上传。拉取镜像的会根据当前系统的架构拉取不同的镜像,也可以通过 --platform 指定什么类型的架构。

2、处理流程

注意:这里使用的 http 类型的 harbar 服务,如果不是请去除参数 --insecure

bash 复制代码
# 构建 arm 镜像
docker build -t registry.xx/public/test-arm:v1.0 -f test-arm.Dockerfile
# 构建 amd 镜像
docker build -t registry.xx/public/test-amd:v1.0 -f test-amd.Dockerfile
# 镜像融合
docker manifest create --insecure --amend registry.xx/public/test:v1.0 registry.xx/public/test-arm:v1.0 registry.xx/public/test-amd:v1.0
# 镜像上传
docker manifest push --insecure registry.xx/public/test:v1.0

3、问题

3.1 docker manifest create is only supported on a Docker cli with experimental cli features enabled

需要开启参数 experimental,只有 docker v20.xx.xx 版本之前的需要,后续版本默认开启该参数。

需要在两个地方加上参数

bash 复制代码
[root~]# cat /etc/docker/daemon.json
{
    
    "insecure-registries" : ["registry.xx"],
    "experimental": true
}

[root~]# cat ~/.docker/config.json
{
	"auths": {
		"registry.xx": {
			"auth": "xxxxxx"
		}
	},
	"experimental": "enabled"
}[ro

3.2 failed to configure transport: error pinging v2 registry: Get https://registry.xx/v2/: http: server gave HTTP response to HTTPS client

如果使用的是 https 的 harbor 则没有下面问题

docker 20.xx.xx 版本存在如下bug

https://github.com/docker/cli/pull/2376

请将docker 版本升级到 20.xx.xx 或者以上

相关推荐
TG:@yunlaoda360 云老大1 小时前
谷歌云AI 时代的算力革命:CPU、GPU 到 TPU 的架构与定位解析
人工智能·架构·googlecloud
阿拉斯攀登1 小时前
Kubernetes(K8s)全面解析:核心概念、架构与实践
docker·云原生·容器·kubernetes·k8s
boboo_2000_01 小时前
基于SpringBoot+Langchain4j的AI机票预订系统
spring cloud·微服务·云原生·langchain
钮钴禄·爱因斯晨2 小时前
# 企业级前端智能化架构:DevUI与MateChat融合实践深度剖析
前端·架构
Radan小哥2 小时前
Docker学习笔记—day011
笔记·学习·docker
AnAnCode2 小时前
ECS 架构 (Entity Component System) - 数据导向编程快速入门
java·架构·游戏服务器
Xの哲學3 小时前
Linux RTC深度剖析:从硬件原理到驱动实践
linux·服务器·算法·架构·边缘计算
Zhijun.li@Studio3 小时前
【Docker实战】在容器内配置 SSH 服务:安装、Vim配置与连接验证(保姆级教程)
docker·ssh·vim
了一梨3 小时前
使用Docker配置适配泰山派的交叉编译环境
linux·docker
拾忆,想起4 小时前
Dubbo配置方式大全:七种配置任你选,轻松玩转微服务!
服务器·网络·网络协议·微服务·云原生·架构·dubbo