kross
A simple CLI to "multi-arch all the things"
What is kross ?
kross is a tool to automate the build of Docker images for multiple architectures without any changes required on your code
Quick start
- Install via pip
pip install kross
- Initialize it (once)
kross init
- Update your docker build commands
Before
docker build -t me/myapp:vX.X.X ...args... path/to/docker/context
docker push me/myapp:vX.X.X
After
kross build -t me/myapp:vX.X.X ...args... path/to/docker/context
kross push me/myapp:vX.X.X
Why kross ?
Kross is born from a Raspberry Pi passionnate developer.
Because Raspberry Pi are arm-based and 90% of images on Dockerhub are amd64-based, developers have to duplicate/tweak all Dockerfiles so the image will work on it and avoid the too much popular cannot execute binary file: Exec format error.
To know more, read the full article.
How kross is working ?
kross is based upon the qemu library to build multiple architectures images on a amd64-based host machine. After all images are built and pushed to a docker registry, a manifest list is pushed too so that users can pull images based on their architectures in a seamless way.
Supported architectures
kross will try to build images for the following architectures:
- amd64
- arm32v6
- arm32v7
- arm64v8
- ppc64le
- s390x
- i386
Run the example
-
Install kross
pip install kross -
Check your machine configuration
kross init -
Run the kross build
kross build -t kross-world:v0.1.0 https://raw.githubusercontent.com/pcorbel/kross/master/docs/example/Dockerfile -
Run the kross push
kross push kross-world:v0.1.0 -
Check images availability on your Dockerhub account
-
Run your image anywhere
docker run --rm kross-world:v0.1.0
Example image available here
Tips and tricks
To know exactly what is happening while kross is working
export KROSS_VERBOSE=true
Metadata
Release files for kross 1.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kross-1.0.4.tar.gz | 9.3 MB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kross-1.0.4-py3-none-any.whl | Python 3 | none | any | Details |
| kross-1.0.4-py2-none-any.whl | Python 2 | none | any | Details |
Total release size: 27.8 MB
Release files / kross-1.0.4.tar.gz
| Download URL | kross-1.0.4.tar.gz |
|---|---|
| Size | 9.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3dab8e1f034a1aca2a9dc7041e655c10ea376d7497deba8b1a37c3fb8a37918b
|
|
BLAKE2b-256 checksum How to use checksums |
22dc06af97c6165174b07650fa22d6514eedd6c0f4c7e6c54ebcc0c7702d5f81
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.16
|
Release files / kross-1.0.4-py3-none-any.whl
| Download URL | kross-1.0.4-py3-none-any.whl |
|---|---|
| Size | 9.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4780996de2b83d1cd2343e99a32cc44b3dda8a4fcc7b9999ac60a1bcea66eed7
|
|
BLAKE2b-256 checksum How to use checksums |
614d6a592789a34e424206e282af314f608acc07107087d72a8bdc46b0e180db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.16
|
Release files / kross-1.0.4-py2-none-any.whl
| Download URL | kross-1.0.4-py2-none-any.whl |
|---|---|
| Size | 9.3 MB |
| Tags | Python 2 |
|
SHA-256 checksum How to use checksums |
1059e3ee9049dd2aa0f765e1850f82539f58f7f2cd618dddb35c4c8cae156688
|
|
BLAKE2b-256 checksum How to use checksums |
8b9bf7b62fa35f51a3824224381b7c81591abe6316beda2d7b084b1ad1ac5c85
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.16
|