When doing automated deployments, especially when using AWS ECR in multiple accounts, you might want to copy images from one registry to another without the need for a full docker installation. At LifeOmic we wanted to orchestrate the copying of images while executing inside a container without exposing a full Docker socket just for image manipulation.
To copy an image between two anonymous repositories, you can use a command line like:
$ copy-docker-image --src-repo http://registry1/ --dest-repo http://registry2 --repo project
To specify an image tag, just add a --tag argument like:
$ copy-docker-image --src-repo http://registry1/ --dest-repo http://registry2 --repo project --tag v1
Because copy to AWS ECR was common a special URL format was added to automatically look up the right HTTPS URL and authorization token. Assuming a AWS CLI profile has been created for your account you can use a command like:
$ copy-docker-image --src-repo http://registry1/ --dest-repo ecr:<account-id> --repo project
Pre-built binaries for tagged releases are available on the releases page.