Когда вы делаете docker push
или вытягиваете изображение, как Docker определяет, есть ли сервер реестра в имени изображения или это путь/имя пользователя в реестре по умолчанию (например, Docker Hub)?
Я вижу следующее из спецификации изображения 1.1:
Тег
Тег служит для сопоставления описательного имени пользователя с любым идентификатором изображения. Значения тегов ограничены набором символов [a-zA-Z_0-9].
вместилище
Коллекция тегов, сгруппированных под общим префиксом (компонент имени перед :). Например, в изображении, помеченном именем my-app: 3.1.4, my-app является компонентом репозитория имени. Имя репозитория состоит из разделенных словом компонентов имени, необязательно с префиксом имени хоста DNS. Имя хоста должно соответствовать стандартным правилам DNS, но не может содержать _ символов. Если присутствует имя хоста, он может сопровождаться номером порта в формате 8080. Компоненты имени могут содержать строчные символы, цифры и разделители. Сепаратор определяется как период, один или два символа подчеркивания или один или несколько тире. Компонент имени может не начинаться или заканчиваться разделителем.
Для имени хоста DNS необходимо ли полностью обладать точками, или является ли "мой-локальный-сервер" действительным именем реестра? Для компонентов имени я считаю периоды действительными, что означает, что "team.user/appserver" является допустимым именем изображения. Если сервер реестра запущен на порту 80, и поэтому номер порта не требуется для имени хоста в имени изображения, похоже, что будет некоторая неопределенность между именем хоста и пути на сервере реестра. Мне любопытно, как Докер разрешает эту двусмысленность.