As you said, docker tag ...; docker push ... docker tag ...; docker push ... is the best way to add a tag to an image and share it.
In the specific example you provided, both tags were in the same repo ( myregistry.com/myimage ). In this case, you can just docker push myregistry.com/myimage , and by default, the docker daemon will delete all tags for the repo at the same time, preserving the iteration over the layers for the common layers.
You can use the same process ( docker tag ...; docker push ... ) to tag images between repositories, for example.
docker tag myregistry.com/myimage:v1.2.3 otherregistry.com/theirimage:v2 docker push otherregistry.com/theirimage
source share