報(bào)錯(cuò)信息:
#9 [internal] load build context
#9 CANCELED
failed to solve: rpc error: code = Unknown desc = failed to load LLB: runtime execution on platform linux/arm64 not supported
解決方法:
構(gòu)建鏡像之前安裝qemu-user-static
為了讓在x86上可以運(yùn)行arm64的docker鏡像担租,這里需要安裝qemu-user-static酒甸,過程如下:
$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
在Jenkins Pipeline Script中的添加方式:
sh 'docker run --rm --privileged multiarch/qemu-user-static --reset -p yes'
if( isMasterBranch || isHotFixBranch || isDevelopBranch ){
stage("Deploy to image repo") {
docker.withRegistry("https://registry.cn-shanghai.aliyuncs.com/", "aliyunDockerRegistry") {
def artifactoryVersion = getReleaseVersion()
def dockerTag
if( isMasterBranch || isHotFixBranch ) {
dockerTag = artifactoryVersion
} else if( isDevelopBranch ) {
dockerTag = getEdgeVersion();
}
println "---> Deploying the image with tag: " + dockerTag
deployedImageTag = "http://registry.cn-shanghai.aliyuncs.com/server/${service}:" + dockerTag
def latestImageTag = "http://registry.cn-shanghai.aliyuncs.com/server/${service}:latest"
sh 'docker run --rm --privileged multiarch/qemu-user-static --reset -p yes'
sh 'docker buildx create --name builder --use'
docker.build(deployedImageTag, "--rm --platform=linux/amd64,linux/arm64 --build-arg ARTIFACT_VERSION=${artifactoryVersion} . --push")
docker.build(latestImageTag, "--rm --platform=linux/amd64,linux/arm64 --build-arg ARTIFACT_VERSION=${artifactoryVersion} . --push")
}
}
}