arm 架构的 image 比较少,不少都得自己 build
之前先是用 hypriot 的 base image,后来用官方的 armhf ,今天看 docker hub armhf 的 repo 已经不维护了,取而代之的是对架构分类更细的 arm32v5,arm32v6,arm32v7,arm64v8 这几个 repo,虽说 pi3 是 64 位的 cpu,但目前没找到功能完善的 64 位系统,v5 也不适合,arm32v6 和 arm32v7 这两个里选的话好像 arm32v6 适用性更广,包括 pi 1 或 zero 也能运行,不知道选 arm32v6 的镜像当 base image 的话在 pi3 上会不会对性能和使用有影响
1
aleung 2017-08-17 00:01:55 +08:00
Resin 的 base image 有没有试过?看介绍似乎挺不错的 https://docs.resin.io/runtime/resin-base-images
|
2
yangxuan8282 OP @aleung 试过 resin 的,不过后来基本是用的 arm32v6 的 Alpine 和 arm32v7 的镜像,因为基本和 library 里的镜像是一致的,resin 的镜像有点太多了,docker hub 的搜索又不太好用,加上 arm32v7 的基本够用就没用 resin 的镜像了
另外它的系统 resin os 倒是挺特别的,基本是为物联网准备的,可以完全在云端操作,git push 之后自动 build,有点 ci/cd 的意思,不过好像只能部署一个容器,也可能是我用的姿势不对 |
3
aleung 2017-08-17 09:05:44 +08:00
如果用 arm32v6/7 作为 base image,是不是必须要在树莓派上 build image ?
我看中 resin 的 cross build 比较方便,在 github 上放了 dockerfile,docker hub 上创建一个 auto build,image 就在云上 build 好了。 像它的 [blog]( https://resin.io/blog/building-arm-containers-on-any-x86-machine-even-dockerhub/) 中的例子: ``` FROM resin/armv7hf-debian RUN [ "cross-build-start" ] RUN apt-get update RUN apt-get install python RUN pip install virtualenv RUN [ "cross-build-end" ] ``` |
4
yangxuan8282 OP @aleung 它那篇文章里介绍的方法其实就是在 arm 镜像中加入 qemu 来实现在 x86 平台进行编译
我试过的在 x86 上编译树莓派镜像有两种方法,都是要用 qemu 一种就是它这样在 Dockerfile 的编译部分前后加入 RUN [ "cross-build-start"]和 RUN [ "cross-build-end"],这种需要提前把 qemu 和它示例项目里的脚本加入镜像,这样可以在任何 x86 机器上进行 build,包括 dockerhub 另一种方法是通过在 x86 机器上运行: ``` docker run --rm --privileged multiarch/qemu-user-static:register --reset ``` 之后就可以在这台机器上 build 或者是 run 任何 arm 镜像了,并且不需要修改原来的 Dockerfile 这两种方法都是可以在 x86 机器上 build arm image 的,不过 qemu 速度相当慢,大概只有运行 x86 镜像速度的 1/10,dockerhub 的自动 build 是有资源限制的,1cpu, 2g ram, 30g 硬盘,2 小时,大一点的项目用 qemu build 很容易就超时了,所以像 php 这种镜像还是要在树莓派上编译的,另外任何用到 gosu 的镜像是没办法用 qemu 的,会直接报错,这个问题存在很久了 除了用 dockerhub 其实也可以用 ci/cd 来 build,像 arm32v7 的镜像记得看日志是用 Jenkins 连了一个 pi 当 slave,另外 drone ci 现在也可以选择 arm 设备当 agent 我在 dockerhub 上建的这个 repo: https://hub.docker.com/r/pipill/ ,多数镜像就是用的第一种方法在 dockerhub 上自动 build 的,也就是你提到的博客里的方法 |
5
aleung 2017-08-18 09:28:20 +08:00 via Android
@yangxuan8282 很有用的信息,谢谢!
|