栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker(十三)——用Docker Buildx制作多架构的镜像

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker(十三)——用Docker Buildx制作多架构的镜像

文章目录
    • 背景
    • 初始化Docker Buildx
    • 制作镜像
    • 检验镜像架构
        • 上传到Harbor仓库
        • 上传到Docker hub仓库
        • 上传到阿里云镜像仓库

背景

默认情况下,x86_64平台只能构建x86_64镜像,如果需要在X86_64平台构建多平台镜像(比如ARM64),我们可以用Docker官方提供的Buildx工具来完成多平台镜像构建。ARM 架构与X86相比,ARM 低功耗、移动市场占比高,X86 高性能、服务器市场占比高。
构建时要用到 docker buildx 命令,Docker 版本需要 19.03+

初始化Docker Buildx

Docker Buildx属于实验性功能,默认并没有开启,需要修改

vim /etc/docker/daemon.json

添加一行

"experimental": true

由于Docker默认的builder实例不支持同时指定多个–platform,所以必须先创建一个新的builder实例,并使用。

docker buildx create --name builderx
docker buildx use builderx
docker buildx inspect --bootstrap


Docker 在 Linux/AMD64 系统架构下是不支持 ARM 架构镜像,因此我们可以运行一个新的容器(Emulator)让其支持该特性。

docker run --rm --privileged tonistiigi/binfmt:latest --install all

制作镜像

制作一个简单的Nginx多架构镜像

vim Dockerfile
FROM nginx
RUN echo 'Hello, Docker!' > /usr/share/nginx/html/index.html


镜像构建后默认保存在构建缓存中,没有保存在本地,所以将 type 指定为 docker,必须分别为不同的 CPU 架构构建不同的镜像,不能合并成一个镜像。

docker buildx build -t harbor.yutao.co/library/nginx-arm64 --platform=linux/arm64 -o type=docker .
docker buildx build -t harbor.yutao.co/library/nginx-amd64 --platform=linux/amd64 -o type=docker .


看到我们制作的镜像

检验镜像架构 上传到Harbor仓库

上传镜像到私有仓库进行检验

docker login harbor.yutao.co
#填写自己的私有仓库地址
docker push harbor.yutao.co/library/nginx-amd64 
docker push harbor.yutao.co/library/nginx-arm64   

上传成功后查看属性看到架构为amd64


可以看到架构的不同

上传到Docker hub仓库

在Docker Hub创建library仓库

docker login
docker buildx build --platform linux/arm64,linux/amd64 -t yutao517/library . --push


上传到阿里云镜像仓库

创建library本地仓库

docker login --username=tao30564 registry.cn-hangzhou.aliyuncs.com

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/941053.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号