Ответ
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