Skip to content

How to implement reproducible deployments if images are getting rebuilt? #12277

Closed
@iamFIREcracker

Description

@iamFIREcracker

You can read more about the context of this request on neo4j/docker-neo4j#342, but in a nutshell:

  • our team first pulls neo4j:4.2.8 during summer 2021, and caches it in an internal registry
    • Note: even though 4.2.8 is not latest, it's still supported by the vendor
    • everything works fine in our ci/cd, and deployment environments
  • we pull the same image again, today, and to our surprise the "new" image does not work within our deployment environments anymore
    • its base image had switched to a different major version of the OS which turned out not to be compatible with the specific version of docker we were running in all of our environments
  • how can users of these images implement "reproducible deployments", if the actual image a tag refers to changes over time?
    • users can probably link to layer digests, though I am not sure if those will be kept around after the same image is re-built
      • and even if digests were kept around, forever, how could users know that a given image got re-built, and what changes it included?
        • I can easily subscribe and stay up to date with the changes of the service (neo4j in this case)
        • but how can I know what changed, in a docker image, after it got first published?

At first I thought the problem was specific to the neo4j image and its library file in particular, wherein all the versions supported by the vendor are listed to get rebuilt: "OK to get rolling tags like 4 or 4.4 to be automatically re-built, but point version? That's a bit unexpected"

But then I took a look around inside library/, and realized that it seems to be a common practice to list point versions to be re-built; now, not all the point versions are usually listed there, just the most recent one it seems, but my concern is still valid i.e. pulling an image today or in 3 months might result in a different image altogether.

So, going back to the title of this issue: how can users implement reproducible deployments, if the images they are linking to are getting rebuilt? Are there any best practices around this topic, that this repository is trying to enforce, or is it up to the upstream/vendor to decide the update policy for each of their tags?

Thanks in advance,
M.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions