Docker拉取、导出、导入镜像小记

889 阅读2分钟

前几天有这么一个需求,要向一个prd环境中传入一个镜像文件,因为是公司内网不能连网,所以要将镜像文件导出后通过U盘复制到服务器再导入,在导入过程中遇到了镜像的CPU架构不致问题,下面记录了如何在拉取镜像时指定CPU架构、如何导入、导出镜像等操作

拉取镜像时指定镜像的架构

关于x86、x86_64、x64、amd64和arm64、aarch64

架构指令集位数原因
X8632位英特尔出的处理器习惯以86为结尾,如80186、80286、80386,所以之后被称为X86
AMD6464位32位向64位演进时,AMD抢先制造出了兼容X86 32位指令集的64位处理器
X86_6464位英特尔采用了AMD64,在此基础上进行了扩充,并改名为X86_64,所以X86_64,X64,AMD64基本上是同一个东西
ARM适用于移动通信这种成本低、高性能、低耗电的领域
ARM-V8AArch64:64位执行状态
AArch32:32位执行状态
有两种执行态,适用于32位和64位
AArch6464位从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

两种方案的区别

  1. 文件大小不同 export导出的镜像文件体积小,丢失镜像历史

  2. 是否可以对镜像重命名 import可以为镜像指定新名称

  3. 是否可以打包多个镜像 save支持

  4. 是否包含镜像历史 export导出的镜像不包含

  5. 应用场景不同 export主要用来制作基础镜像 save适用于不能连外网的情况