Docker 构建多平台镜像
构建多平台镜像的方法分为两种:一种是在不同平台的机器上分别构建并推送对应平台的镜像,然后通过 Docker Manifest 将两个镜像标签合并为一个。另一种是通过 Docker buildx 在一台机器上构建并推送两个平台的镜像。
使用 Manifest 工具
此方法需要你先在对应架构的机器上分别构建和推送对应架构的镜像标签(例如:tag-amd64,tag-arm64),然后使用 docker manifest 合并这些镜像。
使用 docker manifest 命令手动创建和维护多架构镜像列表:
# 创建和维护清单文件
docker manifest create username/repository:tag \
--amend username/repository:tag-amd64 \
--amend username/repository:tag-arm64
# 推送 multi-architecture 镜像
docker manifest push username/repository:tag
检查镜像
创建并推送完成后,你可以到 Docker Hub 上检查镜像是否正确标记了多个架构。
docker manifest inspect username/repository:tag
这个命令将展示镜像的元数据,包括它支持的架构。
使用 Docker buildx
Docker buildx 是 Docker 官方提供的一个插件,支持构建多平台镜像。你可以使用以下步骤创建一个支持多架构的镜像:
创建并启动builder实例:
首先,确保你的 Docker 版本是最新的,并且已经开启了实验性功能(experimental features)。可以通过修改 Docker 的配置文件或设置环境变量
DOCKER_CLI_EXPERIMENTAL=enabled来启用。export DOCKER_CLI_EXPERIMENTAL=enabled
如果你还没有创建过
buildxbuilder 实例,需要首先创建一个:docker buildx create --name mybuilder --use # 创建构建器
docker buildx inspect --bootstrap # 检查并启动构建器
构建和推送镜像:
buildx支持直接构建并推送多架构的镜像。例如,你可以在 arm64 机器上运行类似以下命令:# 使用 buildx 构建并推送镜像到 Docker Hub(或其他容器仓库)
docker buildx build --platform linux/amd64,linux/arm64 -t username/repository:tag --push .
这个命令会同时为 amd64 和 arm64 平台构建镜像,并将它们推送到指定的仓库和标签。
构建的多平台镜像必须使用
--push选项推送
验证镜像架构
构建并推送后,你可以使用以下命令查看镜像支持的架构:
docker buildx imagetools inspect username/repository:tag
这将展示镜像标签下支持的所有架构。
Docker 构建多平台镜像的更多相关文章
- Docker Buildx使用教程:使用Buildx构建多平台镜像
写在前边 记录一下前阵子在X86_64平台使用Docker Buildx构建多平台镜像的办法,包含但不限于构建ARM镜像. 构建环境 软件名 版本 Ubuntu 18.04.2 LTS Docker ...
- 使用Docker构建jdk1.8镜像
一.下载centos镜像 下载自己需要的版本TAG,详见: docker安装指定版本TAG的镜像 $ sudo docker pull centos:centos7 二.下载jdk1.8,并上传到/u ...
- docker: 构建自己的镜像
我们给予ubuntu的镜像然后拷贝python的requirement.txt文件进去,再根据这个文件安装对应的python库 拷贝文件到docker容器.首先查找对应的容器ID.然后执行命令 doc ...
- Docker构建一个node镜像
0. 设置国内docker镜像源 进入Settings->Daemon->Advanced,添加如下配置. { "registry-mirrors": [ " ...
- docker构建一个简易镜像
一 下载centos镜像 docker pull centos 二 启动镜像 [root@Centos-node3 ~]# docker run -it --name my_ng centos bas ...
- 使用Docker构建基于centos7镜像的python环境
Dcokerfile配置信息 ############################################## # 基于centos7构建python3运行环境 # 构建命令: 在Dock ...
- 使用 buildx 构建多平台 Docker 镜像
原文链接:使用 buildx 构建多平台 Docker 镜像 在工作和生活中,我们可能经常需要将某个程序跑在不同的 CPU 架构上,比如让某些不可描述的软件运行在树莓派或嵌入式路由器设备上.特别是 D ...
- DevOps实践之一:基于Docker构建企业Jenkins CI平台
基于Docker构建企业Jenkins CI平台 一.什么是CI 持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...
- docker:Dockerfile构建LNMP平台
docker:Dockerfile构建LNMP平台 1.dockerfile介绍 Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker buil ...
- 视频私有云实战:基于Docker构建点播私有云平台
私有云是为一个客户单独使用而构建的,因而提供对数据.安全性和服务质量的最有效控制.前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序.其核心属性是专有的资源.本篇文章将会结合网易云信的实 ...
随机推荐
- 【Kafka最佳实践】合理安排kafka的broker、partition、consumer数量
broker的数量最好大于等于partition数量 一个partition最好对应一个硬盘,这样能最大限度发挥顺序写的优势. 一个broker如果对应多个partition,需要随机分发,顺序IO会 ...
- 震撼登场,全国产RK3588J工业核心板,让您的产品更具特色!八核2.4GHz!
RK3588J全国产工业核心板10月正式出售如需预定,请与创龙科技联系. 更多详情,请登录创龙科技天猫旗舰店. 瑞芯微RK3568J.RK3588J技术交流QQ群:567208221,欢迎加入!
- JS --函数进阶 --手稿
- Java 数据类型的包装数据类型
什么是包装数据类型 Java是一个面向对象的编程语言,但基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型. 集合框架里面需要存储对象,不能存储基本数据类型,所以需要存储包装 ...
- MySql 数据库、数据表操作
数据库操作 创建数据库 语法 语法一:create database 数据库名 语法二:create database 数据库名 character set 字符集; 查看数据库 语法 查看数据库服务 ...
- Mac制作U盘启动项
导读 鄙人刚买回来的电脑,自带系统版本:10.14.5(19款的),有一天,提示系统升级,升到了10.15.4,从此落下了后遗症,mac系统密码输入完之后,读条读到2/3的时候,会黑屏闪一下,百思不得 ...
- 解决方案 | 将时间转换为毫秒bat
@echo off setlocal enabledelayedexpansion rem 输入的时间 set "time_input=00:07:07.1" rem 解析时间 f ...
- 解决方案 | tk.entry数字验证(输入框如何保证只能输入数字)
from tkinter import * root = Tk() # 创建文本框 entry = Entry(root) entry.pack() # 设置文本框只能输入数字 entry.confi ...
- 国产开源存储之光:Curve 通过信创认证
网易数帆喜讯再传,Curve 近日通过信息技术应用创新(信创)认证! Curve 是一款高性能.易运维.云原生的分布式存储系统,由网易数帆存储团队发起开源,现为 CNCF 沙箱项目.国家工业信息安全发 ...
- 2023/4/15 SCRUM个人博客
1.我昨天的任务 获得了人脸识别作弊检测和绘制界面的分工,准备先从作弊检测入手 2.遇到了什么困难 对作弊检测的组件不熟悉,进展缓慢,需要进行对点的学习 3.我今天的任务 初步学习cython