Skip to content

🐳 Retag an existing Docker image without the overhead of pulling and pushing

License

Notifications You must be signed in to change notification settings

yxd-ym/docker-retag

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Report Card License

Docker Retag

🐳 Retag an existing Docker image without the overhead of pulling and pushing

This is a fork of https://github.com/joshdk/docker-retag . Enhanced with docker integration.

Motivation

There are certain situation where it is desirable to give an existing Docker image an additional tag. This is usually acomplished by a docker pull, followed by a docker tag and a docker push.

That approach has the downside of downloading the contents of every layer from Docker Hub, which has bandwidth and performance implications, especially in a CI environment.

This tool uses the Docker Hub API to pull and push only a tiny manifest of the layers, bypassing the download overhead. Using this approach, an image of any size can be retagged in approximately 2 seconds.

Installing

From source

You can use go get to install this tool by running:

$ go get -u github.com/yxd-ym/docker-retag

Usage

Setup

Since docker-retag communicates with the Docker Hub API, it will use the credential of your docker config. Use docker login to login to dockerhub first.

$ docker login
# Use your login credentials to login

The credentials must have both pull and push access for the Docker repository you are retagging.

Examples

This tool can be used in a few simple ways. The simplest of which is using a source image reference (similar to anything you could pass to docker tag) and a target tag.

Referencing a source image by tag name.
$ docker-retag joshdk/hello-world:1.0.0 1.0.1
  Retagged joshdk/hello-world:1.0.0 as joshdk/hello-world:1.0.1
Referencing a source image by sha256 digest.
$ docker-retag joshdk/hello-world@sha256:933f...3e90 1.0.1
  Retagged joshdk/hello-world@sha256:933f...3e90 as joshdk/hello-world:1.0.1
Referencing an image only by name will default to using latest.
$ docker-retag joshdk/hello-world 1.0.1
  Retagged joshdk/hello-world:latest as joshdk/hello-world:1.0.1

Additionally, you can pass the image name, source reference, and target tag as seperate arguments.

$ docker-retag joshdk/hello-world 1.0.0 1.0.1
  Retagged joshdk/hello-world:1.0.0 as joshdk/hello-world:1.0.1
$ docker-retag joshdk/hello-world @sha256:933f...3e90 1.0.1
  Retagged joshdk/hello-world@sha256:933f...3e90 as joshdk/hello-world:1.0.1

In all cases, the image and source reference must already exist in Docker Hub.

License

This library is distributed under the MIT License, see LICENSE.txt for more information.

About

🐳 Retag an existing Docker image without the overhead of pulling and pushing

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%