Как переименовать Docker-образ (добавить новый тег)?

«Как переименовать Docker-образ (добавить новый тег)?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Docker-образы идентифицируются по имени репозитория и тегу. «Переименование» — это создание нового тега, ссылающегося на тот же самый слой изображений (Layer ID). Основная команда — docker tag.

1. Создание нового тега для локального образа:

# Синтаксис: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag my-old-app:1.0 my-registry.com/team/new-app-name:latest

Эта команда создает новый тег my-registry.com/team/new-app-name:latest, который ссылается на my-old-app:1.0. Исходный тег при этом остается.

2. Удаление старого тега (опционально):

docker rmi my-old-app:1.0

Это удалит только тег, но не сами слои образа, если на них есть другие ссылки.

3. Работа с удаленными реестрами (Docker Hub, GitLab Registry, etc.):

# 1. Логин в реестр
docker login my-registry.com

# 2. Перетегирование локального образа для загрузки в реестр
docker tag my-app:latest my-registry.com/group/project/my-app:stable

# 3. Загрузка (push) образа в реестр
docker push my-registry.com/group/project/my-app:stable

# 4. (Опционально) Удаление образа из локального хранилища
docker rmi my-registry.com/group/project/my-app:stable

Практическое применение в CI/CD: В пайплайне часто создают теги, указывающие на окружение или номер сборки:

# GitLab CI example
docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA .
docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA

# Дополнительный тег для staging
docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA $CI_REGISTRY_IMAGE:staging
docker push $CI_REGISTRY_IMAGE:staging