I have the following setup / workflow:
- My private registry with my own self-signed SSL certificate
- I Build an image and push it to the registry
- I pull the image on another host
- I delete the image from the registry from the registry using the API
- I call the registrys garbage collector
- I try to pull the image from the registry
- I try to push the image (not changed) to the registry again
- I try to pull the image on the other host again
Steps 1 - 6 are working fine, step 4 is kinda working (i guess) but steps 7 - 8 are not working as expected.
4. Image is completely removed from the registry
7. I push the image to the registry during this process some layers (which I deleted in step 4) get pushed.
8. I can pull the image again
4. The image is still present in the registry but has no tags. It seems like this is the way the registry handles image deletion…
7. I can push the image but it says ‘Layer already exists’ for every layer
8. I cant pull the image anymore, docker says:
Error response from daemon: manifest for registry.swarm/waterfall:latest not found: manifest unknown: manifest unknown
After step 8 failed, checking the registry shows me that my image has a tag called “latest” but I cant retrieve the manifest for it using the API (basically the same error as ‘docker pull’ returned)
Pushing the image won’t solve the problem.
The only way to fix the image in the registry is rebuilding the image on the host and pushing the new version.
If I skip step 5 the pull in step 8 kinda works. It starts to pull the image but at some layer docker fails and says “retrying in x seconds”. After a few minutes docker managed to pull the whole image. but fails with
unexpected EOF (nothing more)
Is this the intended behavior or am I doing something wrong?