Docker-从零开始三(跨平台构建Docker镜像)

在第一篇博文中,想必读者根据手顺已经成功搭建了Docker的19.03版本环境,本篇用到的buildx工具已经嵌套在该版本中。但是,在真正使用该工具时,也许你会惊奇的发现,buildx完全不可用;原因是缺少buildx的可执行文件。阅读buildx源码目录中的README.md,给出了三种安装buildx的方法。

在18.09+的docker版本下:

$ git clone git://github.com/docker/buildx && cd buildx
$ make install

在19.03下:

$ export DOCKER_BUILDKIT=1
$ docker build --platform=local -o . git://github.com/docker/buildx
$ mv buildx ~/.docker/cli-plugins/docker-buildx

或者直接在github中找到对应主机平台的buildx可执行文件

将文件移动到~/.docker/cli-plugins下并改名为docker-buildx。没有文件夹自己创建一个。

这样,buildx就安装成功了。

为了实现跨平台构建docker镜像,还需要拉取并启动跨平台build构建器。

执行命令:

启动buildx:

$export DOCKER_CLI_EXPERIMENTAL=enabled

最好写在~/.bashrc中

启用 binfmt_misc:

$sudo docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d

验证binfmt_misc是否开启

$sudo ls -al /proc/sys/fs/binfmt_misc/

创建一个构建器;

$sudo docker buildx create --use --name mybuilder

验证是否启用了相应的处理器:

$sudo cat /proc/sys/fs/binfmt_misc/qemu-aarch64

启动构建器:(这一步在build过程中会自动加载,读者也可以手动操作)

$sudo docker buildx inspect mybuilder --bootstrap

如下图:

接下来构建指定版本的docker 镜像。

准备arm64版本的alpine根文件系统,编写Dockerfile

FROM scratch
ADD rootfs /
CMD ["/bin/sh"]

执行命令:

sudo docker buildx build -t alpine:arm --platform=linux/arm64 -o type=docker .

执行结果如下:

OK,这样就build出arm64版本的镜像,使用命令:

$sudo docker images

查看如图:

使用qemu-user-static插件启动镜像:

执行命令注册qemu-user-static

$sudo docker run --rm --privileged multiarch/qemu-user-static:register

结果如图:

启动镜像执行命令:

$sudo docker run -it -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static alpine:arm

结果如图:

OK,至此,跨平台构建docker image就完成了。

有些读者可能会遇到Dockerfile中RUN命令不能用的问题,可以在Dockerfile开头加入:

# syntax=docker/dockerfile:1.1-experimental

————————————————————————————————————————————————————————

谢谢观看,祝各位工作顺利,生活愉快!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值