前言
Manifest 是一个文件,这个文件包含了有关于镜像信息,如层、大小和摘要。Docker Manifest 命令还向用户提供附加信息,比如构建镜像的操作系统和体系结构。而 Manifest list 是一个镜像清单列表,用于存放多个不同 os/arch 的镜像信息。我们可以创建一个 Manifest list 来指向两个镜像(一个 Linux 64 位和一个指向 arm64 位的镜像),然后对用户提供一个唯一的镜像名称。从 Docker registry v2.3 和 Docker 1.10 开始,Docker hub 就可以 pull multi architecture Docker 镜像了。
步骤
一、开启 Docker 子命令 Manifest 功能:
Manifest 是做为 Docker 客户端的子命令存在,不过这个子命令目前处在实验性中一般没有开启。我们需要手动开始这个子命令的功能。开启过程如下:
1、编辑配置文件 config.json 应用实验性功能:
Docker 的默认配置文件 config.json 是在 $HOME 目录下(如果找不到可以去看看root目录)的 .docker 目录下。编辑 config.json 文件,若目录和文件不存在手动创建。
vi ~/.docker/config.json
{
"experimental": "enabled"
}
2、编辑守护进程配置文件 daemon.json 开启实验性功能:
编辑 daemon.json 若目录和文件不存在手动创建
vi /etc/docker/daemon.json
{
"experimental": true
}
3、重启 Docker:
systemctl daemon-reload
service docker restart
4、验证 Manifest 是否开启成功:
docker manifest --help #----查看manifest帮助信息
docker pull --platform arm64
--platform
:该参数是用于拉取指定平台的镜像,也是实验性功能,在上面步骤中开启后就会出现。通过该参数可以手动指定需要的CPU平台镜像,而不用自动去识别。
二、使用 Manifest 创建多 CPU 架构的镜像清单:
1、创建一个 Manifest list 列表:
创建一个自定义命名的镜像名的 Manifest list,然后用该列表关联仓库里面的两个不同架构的镜像
docker manifest create otakusay/guacamole:latest otakusay/guacamole:arm64-20201008 otakusay/guacamole:amd64-20201008 otakusay/guacamole:arm-20201008
--amend
:如果遇到冲突可以在末尾添加该参数强制生成列表。
2、查看仓库中创建好的 Manifest list:
docker manifest inspect otakusay/guacamole:latest
--verbose
:末尾添加该参数可以显示更详细的信息包括 CPU 架构等。
3、将创建好的 Manifest list 推到仓库中:
docker manifest push otakusay/guacamole:latest
--purge
:末尾添加该参数为推送列表后自动删除本地刚刚创建的列表清单。
后语
认真跟着本文的步骤操作其实一点都不难,要学会举一反三,不能什么东西都复制我的。