Comments (14)
Yes.. somehow this missed my radar for that release I made last week. Let me think about how to represent additional tags in the yaml, as it really should be a different "action" (pretty sure I can tag the final digest using the registry API rather than acting like it is another push which will give you a huge speedup)
from manifest-tool.
I was going to bring up the same thing in this issue depending on how the conversation went :).
from manifest-tool.
@glennc I'm fine with that--sounds reasonable!
@tianon so basically you are looking for what effectively is a "tagging" option where instead of being limited to one tag on the target you want to be able to tag it with multiple tags, which effectively is another push (and I get you don't want to be redoing the lookups on the dependent images to effectively only be doing an additional tag operation) This came up in a recent conversation--that no other tools (other than something that interacts with manifest list entries) can tag your manifest list manifest object/sha, because the docker tag
command only operates on a resolved image, which will be one subentry inside a manifest list. Anyway, I'm definitely fine looking for a way to support this. We could additionally add a 'manifest-tool tag
' command as another option.
from manifest-tool.
I have the exact same scenario with our images. 1.0.3
, 1.0
, 1
not an uncommon pattern.
from manifest-tool.
I don't think manifest-tool
supports/uses them now, but "documents" could be used for this type of functionality (http://www.yaml.org/spec/1.2/spec.html#id2760395):
image: ...
manifests:
...
---
image: ...
manifests:
...
from manifest-tool.
@estesp yeah -- I've got a group of images from multiple architectures which I need joined into a manifest list, and that final manifest list needs to be pushed to several tags on the Hub / registry
For example, in the case of the busybox
official image (ignoring that it has more than one variant for just a moment), I'd need to create busybox:1.26.2
, busybox:1.26
, busybox:1
, and busybox:latest
which all point to the same single manifest list (and it'd be really lovely if I could push that in such a way that the same object gets pushed to all four tags and thus has the same digest).
from manifest-tool.
Yeah, makes total sense to use that as the way to support it.
from manifest-tool.
(A closely related feature I'd like is the ability to specify more than one image in the image:
line so that the same exact manifest object can be pushed twice without having manifest-tool
repeat the work of looking up the images it needs to push and potentially getting a different answer on subsequent tries, but I'll open a separate issue for that if @estesp tells me to 😇)
from manifest-tool.
Yes please! This would be extremely helpful
from manifest-tool.
I am good with working through a PR, but I didn't want to start the effort if @estesp didn't want it.
from manifest-tool.
Friendly poke @estesp 🙏 😇 ❤️
from manifest-tool.
This is actually even more of a problem than I first thought, since it needs to "mount" all the blobs of all the layers of all the images being included, which takes a significant amount of time (and in the case of the alias tag pushes, is 100% duplicate work).
from manifest-tool.
(On the plus side, though, it appears that pushing the exact same list of images twice results in the same digest, so at least there's that! 🤘)
from manifest-tool.
I just realized the PR I have created deals with @tianon's use case but maybe not the originator's (@glennc)?
The new feature in the YAML input is, after specifying the target image: ...
you can now specify a list of tags like:
tags: [1.8.3,1.8,1.8-alpine,06142017-build]
And the manifest list created by the rest of the YAML spec will be tagged with the default tag ("latest") or the one specified in the image: ...
specifier, and then additionally will tag that same manifest with the list of tags from the tags: ...
specifier.
If that doesn't solve the original issue @glennc let me know! Of course @tianon will be happy either way :)
from manifest-tool.
Related Issues (20)
- Push support for types.OCI HOT 5
- FR: add `ocify` to convert between OCI and Docker mediaTypes
- unsupported os/arch or os/arch/variant combination: linux/amd64/v8 HOT 5
- `invalid character 'c' looking for beginning of value ` HOT 1
- Nexus Docker Registry not support. HOT 2
- Error pushing manifest list/index HOT 8
- Image doesnt include docker-credential-ecr-login for AWS credential helper HOT 4
- Cannot include an image in a manifest list/index which is already a multi-platform image HOT 6
- New release for Golang CVE HOT 9
- Scope issue on push with multiple sub-repositories in GCR HOT 10
- [request] Support cred helpers in the mplatform/manifest-tool container HOT 5
- [feature request] allow to display OCI image manifest HOT 1
- --raw flag doesn't show the same data as non-raw output HOT 2
- I
- manifest-tool can't merge images with buildit attestation enabled: Cannot include an image in a manifest list/index which is already a multi-platform image HOT 3
- github.com/docker/docker/cli/config no longer exists, but is used by v2/cmd/manifest-tool/main.go HOT 2
- Guide or Usage for AWS Private ECR HOT 4
- `manifest-tool -v` return 2.1.2 on instead 2.1.3
- Multiple targets HOT 1
- [feature] package build for Alpine HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from manifest-tool.