我的docker随笔20:多平台docker镜像下载
dockerhub上有很多官方的镜像,支持多平台。本文进行简单介绍。
下载
以 busybox 为例,官方镜像地址为: https://hub.docker.com/_/busybox?tab=tags 。可以查看各种平台的各种版本。如图1所示。
下载一个 arm v7 版本的:
docker pull busybox:glibc@sha256:783d05e2c73f48d4499387b807caf11b0b3afef5e17e225643b4b4558b21e221
通过 docker images | grep busybox
查看其镜像 ID 为 2128ff41e8e1。如下:
busybox <none> 2128ff41e8e1 12 days ago 2.68 MB
只有镜像ID,没有镜像名称,打标签:
docker tag 2128ff41e8e1 latelee/armbusybox:v7
这个镜像无法在x86上运行。提示:
standard_init_linux.go:178: exec user process caused "exec format error"
docker 19.03 版本已经支持多平台镜像的构建。因故未实验。
上传
前一小节,我们在拉取镜像时,指定了 sha256 的值,以示区别,但实际上,docker pull
可以根据当前的系统选择不同的镜像,以拉取 nginx 命令为例:
docker pull nginx
在不同系统(如arm、x86、x86_64)执行,得到的镜像是不同的,且匹配当前系统。因为官方的 nginx 支持了不同系统,详情参考 https://hub.docker.com/_/nginx?tab=tags 。
这利益于 docker manifest 机制。
下面尝试制作支持多平台的镜像,对用户而言镜像名称相同,docker 拉取时根据执行命令时的架构判断选择。
1、开启实验特性:
export DOCKER_CLI_EXPERIMENTAL=enabled
2、制作不同镜像。
3、上传镜像
docker push latelee/webgin latelee/amd64webgin
docker push latelee/webgin latelee/armwebgin
4、制作
先创建:
# docker manifest create latelee/webgin latelee/amd64webgin latelee/armwebgin
Created manifest list docker.io/latelee/webgin:latest
再标注不同平台:
docker manifest annotate latelee/webgin latelee/amd64webgin --os linux --arch x86_64
docker manifest annotate latelee/webgin latelee/armwebgin --os linux --arch armv7l
可查看详情:
docker manifest inspect latelee/webgin
最后推送:
docker manifest push latelee/webgin
注1:在不同的系统实验,发现arch字段名称不同,有时用x86_64可以,但有时用amd64可以,一些示例:arm、ppc64le、arm64。
注2:如果错误创建了manifest(如名称不同的镜像,但内容一致,打标签不同,认为是2个,实际是一个),再更新似乎更新不了。方法:找另一台新的机器,重新步骤。
注3:不需要下载到本地,但需要dockerhub上存在。镜像似乎的确要存在于dockerhub上。
注4:因周知之原因,dockerhub网络不太稳定,可能需要多次尝试。
如不存在,无法下载,比如本身不存在arm版本,但却在 arm 系统中拉取:
docker pull latelee/webgin
latest: Pulling from latelee/webgin
latest: Pulling from latelee/webgin
latest: Pulling from latelee/webgin
no matching manifest for linux/arm in the manifest list entries
我的docker随笔20:多平台docker镜像下载相关推荐
- 我的docker随笔36:定制jenkins镜像
本文涉及一种根据实际需求定制 jenkins 镜像的方法及实践.其目的是在官方镜像基础上添加自定义软件.库,以便更加适应项目的开发情况. 一.引言 官方镜像基本能实现了常见的持续集成功能,但还有一些不 ...
- 我的docker随笔25:一个测试用的镜像制作过程
本文记录制作一个镜像的过程,先构建可运行静态程序的镜像,以此为基础,构建一个golang语言编写的web服务器,可获取容器的主机.内核版本等信息.该镜像可用于 k8s 和 KubeEdge 群集测试. ...
- Docker源码分析(十):Docker镜像下载
http://www.infoq.com/cn/articles/docker-source-code-analysis-part10 1.前言 说Docker Image是Docker体系的价值所在 ...
- docker数据圈_《Docker从入门到跑路》之镜像和容器的基本操作
一.获取镜像 官方提供了一个公共镜像仓库Docker Hub,默认是从这上面获取镜像的. 搜素镜像使用docker search 命令: # docker search --help Usage:do ...
- docker from指令的含义_Docker 镜像常用命令
获取镜像 从 Docker 镜像仓库获取镜像的命令是 docker pull.其命令格式为: docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] ...
- 我的docker随笔13:docker源码编译进阶篇
本文与前面文章相同,但多了一些分析的步骤. 一.环境搭建 docker的编译,需要在宿主机预先安装docker软件.因为编译docker的源码时,会构建一个docker镜像并运行,在这个容器里面进行b ...
- 构建多平台Docker镜像
利用 Docker 19.03 以上版本引入的插件 buildx[4],可以很轻松地构建多平台 Docker 镜像.buildx 是 docker build ... 命令的下一代替代品,它利用 Bu ...
- 企业为什么要使用基于Docker的PaaS/CaaS平台
作者:精灵云 前言 早在十多年前国内外的一些大厂就开始投入研发和使用容器技术,比如Google,对他们来说,使用容器能够充分利用计算资源节省硬件成本.而这几年--众所周知--真正把容器技术发扬光大的是 ...
- 微博 Docker 化混合云平台大剖析
8亿用户.单日活跃人数超过1亿人.每日超过600亿次的API调度.超过1兆次远端程序呼叫,甚至连Log记录档每天都爆增100TB,这是新浪微博平台维运架构师王关胜所面对的挑战,他得设计出一个有能力胜任 ...
最新文章
- iPhone真机调试流程
- MOS管电源开关电路的软启动
- [转]JS设计模式-单例模式(二)
- OpenCV中Mat属性step,step1,elemSize,elemSize1
- 谁动了我的工作效率?大咖分享融合通信背后的技术案例
- php swoole编译,php+swoole+redis源码编译安装
- Oracle On Linux
- android.graphics.Color 包含颜色值
- 字典树哇 AC自动机哇 = _ =
- jquery手机模拟器
- php cgi启动报错,php编译安装,cgi启动,以及memcache扩展编译安装.
- Kubernetes 小白学习笔记(29)--kubernetes云原生应用开发-基于Elasticsearch技术栈搭建Kubernetes的集群Logging设施
- 软件技术专家能力模型
- 从零搭建vue-ssr详细介绍
- 视音频编解码技术零基础学习方法(向雷神致敬)
- c++手机编程软件_手机也能编程?盘点这5个可以用手机编程的App!快收藏!
- R语言多元Logistic逻辑回归 应用案例
- 贝叶斯系列:(三)贝叶斯网络
- 字节后端实习技术三面面经
- python字典键盘添加元素_对python字典元素的添加与修改方法详解
热门文章
- python索引值_python索引总结
- 真不一样了!苹果iPhone 14外形提前曝光:采用“打孔+药丸”的设计
- 火遍全网,却被广东人嫌弃!昔日“百亿网红”,快被打回原形了
- Switch OLED版被玩家吐槽:屏幕大了价格暴涨 性能未升级
- 抖音发布女性数据报告:平均每天31.8万女性发布自拍视频又删除
- 特斯拉要开杂货铺? 除了卖车还要卖短裤和酒水
- 阿里巴巴发布第四财季财报 菜鸟驿站包裹量增长100%
- 高通孟樸:5G+AI将会是移动互联网主流趋势
- 拿下阿里投资 回血的网易云音乐能成功突围吗?
- 微信内测新功能:公众号们脖子一凉...