Аутентификация в собственноручно развернутом реестре с использованием имени пользователя и пароля
На этом этапе вы научитесь аутентифицироваться в собственном (самостоятельно развернутом) реестре Docker с использованием имени пользователя и пароля. Хотя Docker Hub является реестром по умолчанию, вам может понадобиться взаимодействовать с приватными реестрами, размещенными в вашей организации или на облачном провайдере.
Самостоятельно развернутый реестр - это Docker-реестр, который вы настраиваете и управляете самостоятельно, вместо использования публичной службы, такой как Docker Hub. Это часто делается по соображениям безопасности, соответствия стандартам или производительности.
Для аутентификации в собственном реестре вы используете ту же команду docker login, но вам нужно указать адрес реестра. Формат команды: docker login <registry_address>.
В рамках этой практической работы мы будем симулировать собственноручно развернутый реестр. Мы будем использовать заглушку myregistry.local. В реальной ситуации это был бы фактическое доменное имя или IP-адрес вашего реестра.
Откройте терминал в директории ~/project.
Чтобы войти в наш симулированный собственный реестр, выполните следующую команду, заменив your_registry_username и your_registry_password гипотетическими учетными данными, которые вы бы использовали для этого реестра:
docker login myregistry.local
Вас попросят ввести имя пользователя и пароль для реестра myregistry.local:
Login with your Docker ID to push and pull images from myregistry.local. If you don't have a Docker ID, head over to https://hub.docker.com/ to create one.
Username: your_registry_username
Password: your_registry_password
Введите гипотетическое имя пользователя и пароль. Поскольку myregistry.local не является реальным работающим реестром в этой среде, вход, скорее всего, завершится с ошибкой, указывающей, что реестр недоступен или аутентификация не удалась. Это ожидаемо для данной симуляции. Основное здесь - понять синтаксис команды и процесс указания другого реестра.
Error response from daemon: Get "http://myregistry.local/v2/": dial tcp: lookup myregistry.local on 127.0.0.53:53: no such host
Даже несмотря на то, что вход не удался из-за того, что реестр не существует, синтаксис команды docker login <registry_address> является правильным для попытки аутентификации в собственном реестре.
В реальной ситуации с работающим собственным реестром успешный вход приведет к появлению сообщения "Login Succeeded", и ваши учетные данные для этого конкретного реестра будут сохранены в файле конфигурации Docker (~/.docker/config.json).
Давайте посмотрим на файл конфигурации Docker, чтобы увидеть, как хранится информация о реестре.
cat ~/.docker/config.json
Вы увидите структуру JSON. После успешного входа в Docker Hub на предыдущем этапе вы должны увидеть запись для https://index.docker.io/v1/. Если бы вы успешно вошли в myregistry.local, вы бы увидели дополнительную запись для этого адреса реестра.
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "..."
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/..."
},
"credsStore": "desktop"
}
Секция auths содержит информацию об аутентификации для различных реестров, в которые вы вошли. Каждый ключ в auths - это адрес реестра, а значение содержит детали аутентификации.
На этом этапе показано, как указать адрес собственного реестра при использовании команды docker login.