-
Notifications
You must be signed in to change notification settings - Fork 18.9k
Description
Hi,
I'm a Kubernetes maintainer, and works mostly on multiarch and deployment things.
I'm writing a proposal for multi-arch Kubernetes here: kubernetes/kubernetes#26863, and part of the conclusion there is that manifest lists are a perfect fit for Kubernetes.
Now we're trying to dramatically remove cluster deployment complexity, and as a part of that, I think it would be great to try to remove the image naming hack. (Now we're using registry/binary-arch:version as the image naming convention, which does its job, but a manifest list would be better)
I know @estesp has a tool for this, and if nothing else comes out of this, we probably have to use that.
But it would be great if we could get a manifest command to docker.
Anyway, I do not imagine this as a "easy to fix"-thing; rather something that's quite a big change, so therefore we probably need an assignee from the Docker team, and Docker have to stand behind the things proposed, otherwise we shouldn't do this right now.
In fact, the tasks that are yet to be done are well-documented here already: https://integratedcode.us/2016/04/22/a-step-towards-multi-platform-docker-images/ (thanks!)
Example how the manifest command could work (very rough, appreciating discussion):
$ docker manifests
ID NAME IMAGE (IMAGE ID) OS ARCH VARIANT
{sha} luxas/debian:jessie debian:jessie {debian sha} linux amd64 N/A
armhf/debian:jessie {sha } linux arm GOARM=7
aarch64/debian:jessie {sha } linux arm64 N/A
$ docker manifests append luxas/debian:jessie ppc64le/debian:jessie --os linux --arch ppc64le
$ docker manifests
ID NAME IMAGE (IMAGE ID) OS ARCH VARIANT
{sha} luxas/debian:jessie debian:jessie {debian sha} linux amd64 N/A
armhf/debian:jessie {sha } linux arm GOARM=7
aarch64/debian:jessie {sha } linux arm64 N/A
ppc64le/debian:jessie {sha } linux ppc64le N/A
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
?luxas/debian jessie {sha}
...
$ docker push luxas/debian:jessieOpen questions:
- Should we show the manifest list at all in
docker images? - Should the manifest list be considered an "image" or just a placeholder for an image?
- Should it be possible to
docker build --os x --arch y --variant z -t {manifest name} .? - How should we display that a manifest list was downloaded, but not all images for all platform in it?
- Can we add content addressability to a manifest list?
- etc....
Related: #22816 #22106 distribution/distribution#200
@tianon @estesp @jfrazelle @cpuguy83 @calavera @icecrime @jstarks @mikedanese @thockin @vishh @david-mcmahon @stevvooe @paralin
Note: These are my personal ideas and might not represent the rest of the Kubernetes team