因为需要arm64的kubernetes镜像,但是需要通过x86的服务器下载。解决步骤如下:
1、启用多架构镜像支持
修改docker服务加参数–experimental=true
nano /etc/docker/daemon.json
添加如下内容:
{
"experimental":true
}
然后重启docker。
sudo systemctl restart docker
查看是否experimental已经生效。
docker info
#注意下面的一行
#Experimental: true
2、拉取arm64镜像
拉取镜像的时候用指定参数 --platform arm64,如:
docker pull --platform arm64 k8s.gcr.io/pause:3.5
然后用docker inspect查看镜像是否符合需要的架构。
docker inspect k8s.gcr.io/pause:3.5
查看里面的一行:
"Architecture": "arm64",
"Os": "linux",
"Size": 483864,
"VirtualSize": 483864,
3、问题解决
通过上面的方式可以在x86的机器上拉取arm64的镜像,但有两个问题:
- 不能在x86机器上运行该镜像。
- 同一个tag会覆盖之前的镜像。也就是说,会把x86的镜像覆盖掉。
因此,该方法只能用于临时中转镜像,如果要运行还需要恢复x86下的镜像。
- 解决办法:
- 拉取镜像后,立即重新tag。
- 重新拉取x86的镜像。