Since Docker doesn't provide an image rename capability, here is how to effectively rename a docker image in three commands:
docker pull UglyOldTag
docker tag UglyOldTag ShinyNewTag
docker rmi UglyOldTag
Note: This is really just adding a new tag and removing the old tag. As mentioned above, tags are actually just a mnemonic alias, or a pointer, to the image ID field. If that isn't confusing enough, the Docker API and documentation also often use "tag" to refer to the version (i.e. that part of the image name that comes after the ":", as in MyImage**:**latest).
However, typo's and mistaken names are not the only place where you might want to rename a tag. For example, if you are using Amazon's ECR, before you can check your image in, you are required to assign the full ARN as the tag. This means that your tags are big and ugly!
Note: As you look at the example below, it is useful to remember that the Amazon and DockerHub refer to each hierarchy of docker images as a "repository".
# Create the ECR 'repository' for the image
aws ecr create-repository \
--repository-name myFavoriteTag \
--image-scanning-configuration scanOnPush=true \
--region myFavoriteRegion
docker tag myFavoriteTag:latest aws_account_id.dkr.ecr.aws_region.amazonaws.com/myFavoriteTag:latest
docker push aws_account_id.dkr.ecr.aws_region.amazonaws.com/myFavoriteTag:latest
So, a quick way to clean the ugliness up is
ECR_BASE==aws_account_id.dkr.ecr.aws_region.amazonaws.com
docker pull ${ECR_BASE}/myFavoriteTag
docker tag ${ECR_BASE}/myFavoriteTag myFavoriteTag
docker rmi ${ECR_BASE}/myFavoriteTag
docker run myFavoriteTag
Of course, to check it back into ECR, you have to put the ugliness back on
docker tag ${ECR_BASE}/myFavoriteTag:latest