To create Docker images with multi architecture support, create your Docker image as usual with a tag for the architecture and push them to the Docker Hub. After all images has been pushed, create a manifest file and push them as :latest image to the Docker Hub.
Create and push manifest file
$ docker manifest create --amend \
jackgruber/manifest:latest \
jackgruber/manifest:armhf \
jackgruber/manifest:amd64
$ docker manifest push jackgruber/manifest:latest
You can inspect a manifest through follow command:
docker manifest inspect jackgruber/manifest
Now the matching version for the architecture is loaded with the docker run jackgruber/manifest
command.
Enable experimental mode
At the moment the manifest command is experimental and must be enabled.
For enabling this, edit the ~/.docker/config.json
and add following option "experimental": "enabled"
.
manifest blob unknown
If you get follow error, delete the corresponding folder for the manifest in ~/.docker/manifests/
an create the manifest again.