前几天有这么一个需求,要向一个prd环境中传入一个镜像文件,因为是公司内网不能连网,所以要将镜像文件导出后通过U盘复制到服务器再导入,在导入过程中遇到了镜像的CPU架构不致问题,下面记录了如何在拉取镜像时指定CPU架构、如何导入、导出镜像等操作
拉取镜像时指定镜像的架构
关于x86、x86_64、x64、amd64和arm64、aarch64
| 架构 | 指令集位数 | 原因 |
|---|---|---|
| X86 | 32位 | 英特尔出的处理器习惯以86为结尾,如80186、80286、80386,所以之后被称为X86 |
| AMD64 | 64位 | 32位向64位演进时,AMD抢先制造出了兼容X86 32位指令集的64位处理器 |
| X86_64 | 64位 | 英特尔采用了AMD64,在此基础上进行了扩充,并改名为X86_64,所以X86_64,X64,AMD64基本上是同一个东西 |
| ARM | 适用于移动通信这种成本低、高性能、低耗电的领域 | |
| ARM-V8 | AArch64:64位执行状态 AArch32:32位执行状态 | 有两种执行态,适用于32位和64位 |
| AArch64 | 64位 | 从ARM- V8中独立出来 |
通过修改dockerd的配置文件,并重载,可以在服务器上开启dockerd的实验属性。为配置文件/etc/docker/daemon.json添加"experimental":true.修改后的文件和下面的比较像:
cat /etc/docker/daemon.json
{
"experimental": true
}
修改完成后,使用以下命令重置服务
systemctl daemon-reload
systemctl restart docker
拉取指定架构的镜像
# 拉取指定架构的镜像
docker pull bitnami/minio:2023.3.24 --platform linux/amd64
# 查看镜像的架构
docker image inspect 56222e2b928b | grep Architecture
导入、导出镜像,方案一:通过镜像
# 查看所有镜像
docker images
# 导出镜像
docker save bitnami/minio:2023.3.24 > minio.2023.3.24.tar
# 将多个镜像打包成一个文件
docker save -o xxx.tar image1 image2
# 载入镜像
docker load < xxx.tar
导入、导出镜像,方案二:通过容器
# 查看所有容器
docker ps -a
# 导出镜像
docker export 容器id > image.tar
# 导入镜像
docker import 容器名 < image.tar
两种方案的区别
-
文件大小不同 export导出的镜像文件体积小,丢失镜像历史
-
是否可以对镜像重命名 import可以为镜像指定新名称
-
是否可以打包多个镜像 save支持
-
是否包含镜像历史 export导出的镜像不包含
-
应用场景不同 export主要用来制作基础镜像 save适用于不能连外网的情况