A major caveat on DockerHub (not your fault) of push from-args is that the operation overwrites what is there, not appends.
This means, you can not dynamically add additional architectures to a pre-existing list or do a multiple-builds and have them join up under 1 tag, you must have the complete list, and push it only at the end when all builds are complete.
I think this should be called out, in documentation, somewhere. I spent 4 hours wondering why my multi-architecture builds were not showing. 😠
/ # ./manifest-tool inspect jnovack/autossh:test
Name: jnovack/autossh:test (Type: application/vnd.docker.distribution.manifest.list.v2+json)
Digest: sha256:3bf6448f1d1ab44c2691d37ad5272afc3364eaecb5b8c815098f9fd5bedd7ed9
* Contains 1 manifest references:
1 Mfst Type: application/vnd.docker.distribution.manifest.v2+json
1 Digest: sha256:876d2648e610fdf224246561d57bd340316ad73d9cf8c6b94c8f19935b66db46
1 Mfst Length: 1157
1 Platform:
1 - OS: linux
1 - OS Vers:
1 - OS Feat: []
1 - Arch: arm
1 - Variant:
1 - Feature:
1 # Layers: 4
layer 1: digest = sha256:52278dd8e57993669c5b72a9620e89bebdc098f2af2379caaa8945f7403f77a2
layer 2: digest = sha256:cd1a4a0564f1988e37a1cb0380397a2db9f28824ac7c1abdb855201bc72cccd0
layer 3: digest = sha256:772672a29dadab958356b473b3f8487ecc6c681e142fb5b60f8e852282f13988
layer 4: digest = sha256:40f3bdac7e4592aeb10960ab7bef50f66f1e92195aa0d26bcda2e543babed85f
/ # ./manifest-tool push from-args --platforms linux/arm64 --template jnovack/autossh:v2.0-arm64v8 --target jnovack/autossh:test
Digest: sha256:8285c7c23832ca45fe478d46376a4c56fd8392c213e9312ad0055b34c3da6b89 434
/ # ./manifest-tool inspect jnovack/autossh:test
Name: jnovack/autossh:test (Type: application/vnd.docker.distribution.manifest.list.v2+json)
Digest: sha256:8285c7c23832ca45fe478d46376a4c56fd8392c213e9312ad0055b34c3da6b89
* Contains 1 manifest references:
1 Mfst Type: application/vnd.docker.distribution.manifest.v2+json
1 Digest: sha256:575c937126cbdef12e64b98366c6901c213e93b1e645fbeed0cb6369464b17d6
1 Mfst Length: 1157
1 Platform:
1 - OS: linux
1 - OS Vers:
1 - OS Feat: []
1 - Arch: arm64
1 - Variant:
1 - Feature:
1 # Layers: 4
layer 1: digest = sha256:b538f80385f9b48122e3da068c932a96ea5018afa3c7be79da00437414bd18cd
layer 2: digest = sha256:e47f356fda3fcbd5ce6a215c9910b4dbf57ac7e423dffc227de544d1e74d6a28
layer 3: digest = sha256:207cbbd7dc95f863704f1b187b77a6eeda0c82edcb0f491365c29da0e32b295b
layer 4: digest = sha256:250a14336a497fb414bbda6e0c4882e6af6b4485e7784a64b159a6af4dcfbe3b
A major caveat on DockerHub (not your fault) of
push from-argsis that the operation overwrites what is there, not appends.This means, you can not dynamically add additional architectures to a pre-existing list or do a multiple-builds and have them join up under 1 tag, you must have the complete list, and push it only at the end when all builds are complete.
I think this should be called out, in documentation, somewhere. I spent 4 hours wondering why my multi-architecture builds were not showing. 😠