[CentOS-devel] [altarch] multiarch docker images
Manfred Touron
mtouron at scaleway.com
Thu Jan 14 15:29:47 UTC 2016
Hi everyone,
I'm working at Scaleway on the multiarch images system,
I'm @moul on IRC and talked with @Arrfab and @Evolution (thanks a lot, guys).
---
Context: Today, we are using Docker as a build-step to generate
our baremetal servers rootfs, what we call, the "Scaleway images".
Here is an example of "1 click app" image:
- Public Hub: https://hub.scaleway.com/wordpress.html
- DevHub (aggregate APIs): http://devhub.scaleway.com/#/images/wordpress:latest
- Source (GitHub): https://github.com/scaleway-community/scaleway-wordpress/
- Docker Hub: https://hub.docker.com/r/scaleway/wordpress/
- Build logs: https://travis-ci.org/scaleway/qa/builds/98515979
We are quite happy today with this method and are succesfully running
plenty Linux distributions (Ubuntu, openSUSE, Gentoo, Fedora, Debian,
Arch Linux and Alpine Linux).
Actually we also have a proof-of-concept of CentOS image, but based
on an old development CubieTruck snapshot with no public mirrors.
Here is how I built this POC image (I wasn't aware of virt-tar-out):
https://github.com/armbuild/centos-img/blob/master/buildcontainers.sh
---
We will soon release new server models with new architectures, our next
priorities are: `arm64` and `x86_64`, but we plan to support more architectures
if we feel enough people will need it so the development worth it.
I started to work on "multiarch" images (one image per architecture).
Here are some images:
- https://github.com/multiarch/alpine
-> built with `apk-static` in a chroot
- https://github.com/multiarch/busybox
-> static binaries extracted from latest busybox-static.deb
- https://github.com/multiarch/ubuntu-debootstrap
-> qemu-debootstrap
- https://github.com/multiarch/debian-debootstrap
-> same as above
- https://github.com/multiarch/ubuntu-core
-> based on released rootfs tarballs at
https://partner-images.canonical.com/core/wily/current/
All those images also contains an `x86_64` `qemu-${ARCH}-static` so
you can run them on an `x86_64` host with `binfmt-support` available.
Look at the README.md files for usage and examples.
I began to work on the Centos image https://github.com/multiarch/centos,
I successfully built the `armhf` and `arm64` images by `virt-tar-out`ing
the CubieTruck released image, i.e.:
http://mirror.centos.org/altarch/7.2.1511/isos/armhfp/
I also successfully built the `x86_64` and `i386` images using kickstart:
livemedia-creator --arch=i386 --make-disk \
--iso=/tmp/boot7-i386.iso \
--ks=$(pwd)/centos-7.ks \
--image-name=centos-7-base-i386
based on https://github.com/CentOS/sig-cloud-instance-build/tree/livemedia_builds/docker
For now I failed to build the `ppc64` nor `ppc64le` images, but that's not a
priority.
I have now an issue, my `armhf` and `x86_64` images are not the same,
the ones based on real boards .img.xz embed about 300M of kernel images,
dtb, kernel modules, firmware (I don't want them) + a lot more apps that we
can find by default in the <200Mb `x86_64` Docker image.
I would like to find a solution to build "same" images for all the targets
and avoid as much as possible the need of diffing the outputs of
`yum list installed`.
My favorite solution would be to use kickstart files, which are very cool
to put on GitHub. But the non `x86_64` architectures lack of a `boot.iso`
file packing `isolinux`.
Is it possible to add those `boot.iso` files on the mirror or tell
me how to build them ?
Do you see alternative ways to build identical images ?
--
Manfred Touron - @moul
CTO @ scaleway.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.centos.org/pipermail/centos-devel/attachments/20160114/bda3bf89/attachment.sig>
More information about the CentOS-devel
mailing list