How do they (image spec, manifest) work all together?

Hello all!

I would like to clarify some points regarding docker and registry API and documentation. Would appreciate any help.

What we have:

  • We have image specs

  • We have image manifests: 2.1 and 2.2 (sorry, as a new user I can not add more than 2 links)

  • And we have Docker Registry HTTP API V2 (sorry, as a new user I can not add more than 2 links)

Questions:

  • How do image specs relate to image manifest? Why do they have different versioning? I guess manifest relates only to Registry HTTP API and spec used by docker itself. So manifest describe the image for registry and spec do the same for docker itself. But what is the correlation between the versioning of both of them?

  • Where is manifest v1?

  • Where is Registry HTTP API v1?

Thank you!

And here another one:

  • What is difference between image ID and digest?