Другое

Полное руководство: Как переименовать имя репозитория Docker

Узнайте, как переименовывать имена репозиториев Docker с помощью команды docker tag. Полное руководство по изменению имен образов без дублирования хранилища. Пошаговые инструкции по управлению репозиториями Docker.

Как изменить или переименовать имя репозитория Docker?

Я пытаюсь изменить имя репозитория Docker-образа с “server” на “myname/server”. Текущие детали образа:

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
server              latest              d583c3ac45fd        26 minutes ago      685.5 MB

Я хочу достичь следующего результата:

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
myname/server       latest              d583c3ac45fd        26 minutes ago      685.5 MB

Какой правильный метод для переименования или изменения имени репозитория Docker?

Чтобы изменить имя репозитория Docker, необходимо использовать команду docker tag для создания нового псевдонима для того же ID образа, а затем при необходимости удалить старый образ. Правильная команда - docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG], которая создает ссылку на тот же образ под новым именем репозитория без дублирования содержимого образа.

Содержание


Основы именования образов Docker

Образы Docker имеют определенное соглашение об именовании, которое следует шаблону: REPOSITORY[:TAG]. Часть REPOSITORY представляет имя образа, а TAG - версию или вариант этого образа. Важно отметить, что согласно документации Docker, имена и теги образов Docker по сути являются псевдонимами для фактического ID образа, который является уникальным идентификатором, например d583c3ac45fd.

Ключевое понимание: Несколько тегов могут указывать на один и тот же ID образа. Когда вы “переименовываете” образ Docker, вы фактически создаете новый тег, который ссылается на то же базовое содержимое образа.

Из вашего примера образ server:latest с ID d583c3ac45fd может иметь несколько псевдонимов, указывающих на него одновременно. Это означает, что вы можете одновременно иметь и server:latest, и myname/server:latest, указывающие на один и тот же образ без дублирования хранилища.


Пошаговый процесс переименования репозитория

Шаг 1: Проверка текущих деталей образа

Сначала подтвердите текущие детали образа с помощью команды docker images:

bash
docker images

Это должно показать ваш текущий образ:

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
server              latest              d583c3ac45fd        26 минут назад      685.5 MB

Шаг 2: Создание нового псевдонима репозитория

Используйте команду docker tag для создания нового псевдонима с желаемым именем репозитория:

bash
docker tag server:latest myname/server:latest

Разбор команды:

  • server:latest = Исходный образ, который вы хотите переименовать
  • myname/server:latest = Новое имя репозитория и тег

Как объясняется в ответе Stack Overflow, эта команда создает новую ссылку на тот же ID образа.

Шаг 3: Проверка нового псевдонима

Проверьте ваши образы снова, чтобы подтвердить, что новый псевдоним был создан:

bash
docker images

Теперь вы должны увидеть как оригинальные, так и новые имена репозиториев:

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
server              latest              d583c3ac45fd        26 минут назад      685.5 MB
myname/server       latest              d583c3ac45fd        26 минут назад      685.5 MB

Шаг 4: (Опционально) Удаление оригинального образа

Если вы уверены, что оригинальное имя образа больше не нужно, вы можете удалить его с помощью:

bash
docker rmi server:latest

Важно: Удаляйте старый образ только в том случае, если вы уверены, что это не повлияет на другие части вашей настройки Docker или конвейеров CI/CD, как указано в учебнике Jhooq.


Продвинутые техники переименования

Переименование с разными тегами

Вы также можете переименовать образ, изменяя его тег:

bash
docker tag server:latest myname/server:v1.0

Это создает версионированный псевдоним, сохраняя оригинал без изменений.

Переименование нескольких тегов

Если у вашего образа несколько тегов, вам нужно создать новые псевдонимы для каждого:

bash
docker tag server:v1.0 myname/server:v1.0
docker tag server:v2.0 myname/server:v2.0

Переименование для удаленного репозитория

При подготовке образов для удаленных репозиториев убедитесь, что имя репозитория соответствует соглашениям об именовании реестра:

bash
docker tag server:latest docker.io/yourusername/server:latest

Лучшие практики управления репозиториями Docker

1. Используйте последовательные соглашения об именовании

Как упоминается в статье Medium, последовательное именование становится критически важным для ясности и воспроизводимости, особенно когда несколько команд взаимодействуют с общими контейнерами.

2. Сохраняйте оригинальные ссылки во время тестирования

При переходе на новое имя репозитория сохраняйте оригинальные ссылки до тех пор, пока не будете уверены, что все работает правильно. Это позволяет легко откатиться, если возникнут проблемы.

3. Используйте осмысленные теги

Всегда используйте осмысленные теги, которые указывают на версию, среду или назначение. Например:

  • myname/server:prod-1.2.3
  • myname/server:dev-latest

4. Очищайте неиспользуемые псевдонимы

Регулярно очищайте неиспользуемые псевдонимы образов для поддержания чистой среды:

bash
docker rmi server:old-tag

Устранение распространенных проблем

Ошибки отказа в доступе

Если вы encountering ошибки отказа в доступе при попытке отправки в удаленный реестр, убедитесь, что вы вошли в систему:

bash
docker login

Ошибки “образ уже существует”

Если вы получаете ошибку “образ уже существует”, это означает, что в вашем локальном репозитории уже есть образ с таким именем. Вы можете либо:

  • Удалить существующий образ: docker rmi myname/server:latest
  • Использовать другое имя тега: docker tag server:latest myname/server:v2.0

Проблемы с сетью при работе с удаленными репозиториями

При работе с удаленными репозиториями убедитесь, что у вас есть надлежащее сетевое подключение и что URL реестра правильный. Проверьте подключение с помощью:

bash
docker pull your-registry.example.com/image:tag

Заключение

Изменение имени репозитория Docker достигается с помощью команды docker tag, которая создает новый псевдоним, указывающий на тот же ID образа. Вот основные выводы:

  1. Используйте docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] для переименования вашего репозитория Docker
  2. Оригинальный образ остается без изменений до тех пор, пока вы явно не удалите его с помощью docker rmi
  3. Несколько псевдонимов могут указывать на один и тот же образ без дублирования пространства хранения
  4. Тщательно тестируйте перед удалением оригинальных ссылок на образы, чтобы избежать нарушения существующих настроек
  5. Следуйте соглашениям об именовании, которые осмысленны и последовательны в вашей организации

Для вашего конкретного случая команда docker tag server:latest myname/server:latest достигнет именно того, что вы ищете, создав псевдоним репозитория myname/server:latest при сохранении оригинального содержимого образа.

Источники

  1. Docker how to change repository name or rename image? - Stack Overflow
  2. docker image tag | Docker Docs
  3. How I Change Name of My Docker Repository and Rename Images? | Jhooq
  4. Docker — How to Change Repository Name or Rename Image | Medium
  5. How to change or update Docker image tags
Авторы
Проверено модерацией
Модерация