Реестр и индекс докеров

Добрый день!

Я просмотрел тонну информации о реестре докеров и все еще имею некоторые вопросы об этом... Пожалуйста, помогите мне понять некоторые вещи об индексах и реестре.

  • Я установил docker-реестр для частных репозиториев. И я работал с автономным режимом. Насколько я понимаю, реестр докеров не может аутентифицировать пользователей - он запрашивает индекс для разрешений и auth. Таким образом, я отключил автономный режим, поэтому docker-registry должен аутентифицировать меня по index.docker.io, но он не работает - реестр позволяет мне нажимать и извлекать любые изображения, которые я хочу. Итак, вопрос в том, почему docker-реестр не пытается аутентифицировать меня i index.docker.io?

  • Если docker-registry аутентифицирует меня через index.docker.io, так где хранятся параметры авторизации? Я имею в виду, если я хочу предоставить пользователю возеров нажать только на private.repo.domain: 5000/vozerov репозиторий.

  • Докер выполняет поиск по индексу. Поэтому, если я хочу искать свои изображения в моем личном репозитории, мне нужно сообщить index.docker.io, что есть новый закрытый репозиторий. Является ли это реальным или я говорю что-то неправильно?

  • Я нашел проект docker-index в github - https://github.com/ekristen/docker-index. Это альтернатива для index.docker.io. Итак, если я его установлю, войдите в него, будет поиск команды поиска докеров через мой частный индекс или через index.docker.io?

UPD

Я много работал с док-реестром этой ночью, поэтому я немного смутился:

  • Если автономный режим имеет значение true, то disable_token_auth не используется в любой вариант. Таким образом, мы можем:

    1.1 Используйте это репо без auth (вытаскивайте и нажимайте права на всех).

    1.2. Используйте базовый auth с именем nginx и docker my.registry.com, поэтому каждый пользователь, у которого есть базовая информация, может нажать и потянуть. Таким образом, у нас нет авторизации в этом режиме.

  • Если автономный режим является ложным, то docker-registry необходимо связываться с index.docker.io, но это не так. Два варианта:

    2,1. Если disable_auth_token истинно - я получаю ошибку 405 (метод не разрешен), но это означает, что я разрешаю кому-либо нажать или вытащить изображения или нет?

    2,2. Если disable_auth_token является ложным - я получаю ошибку 405...

И для входа в 2.1 и 2.2 для док-станции my.registry.com не работает - он показывает мне ошибку 404... Может быть, это моя неправильная конфигурация?

Ответ 1

1. Я установил docker-реестр для частных репозиториев. И я работал с автономным режимом. Насколько я понимаю, реестр докеров не может аутентифицировать пользователей - он запрашивает индекс для разрешений и auth. Таким образом, я отключил автономный режим, поэтому docker-registry должен аутентифицировать меня по index.docker.io, но он не работает - реестр позволяет мне нажимать и извлекать любые изображения, которые я хочу. Итак, вопрос в том, почему docker-registry не пытается аутентифицировать меня я index.docker.io?

В приватном приватном реестре реестра нет аутентификации, потому что вы не настроили его. Вы должны использовать nginx в качестве обратного прокси для настройки аутентификации, и поскольку клиент-докер не поддерживает базовую аутентификацию без SSL, вам также нужно настроить SSL на обратный прокси.

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

  • Когда вы запускаете поиск докеров со своего клиента-докера, он по умолчанию будет искать концентратор докеров и позволяет вытаскивать из него любое изображение до тех пор, пока оно открыто.

  • Для того чтобы нажать изображение в Docker Hub, необходимо войти в систему.

  • Теперь, если вы хотите выполнить поиск в своем приватном реестре докеров, вы должны сообщить клиенту докера выполнить поиск этого реестра в следующем формате:

      docker search private.repo.domain:5000/vozerov 
    
  • Теперь, в зависимости от того, какой реестр вы действительно хотите искать, ваш частный реестр потребует его собственной проверки подлинности, если вы настроите его с помощью обратного прокси-сервера, док-концентратор потребует от вас также входа в систему, если вы хотите его использовать для перемещения изображений.

  • Причина, по которой вы можете нажать/вывести/выполнить поиск, заключается в том, что вы, вероятно, говорите клиенту-докеру о том, что делать эти действия в вашем частном реестре, указав имя домена: port/image_name, даже если вы не укажете и не используете Docker Hub по умолчанию, вы не столкнетесь с проблемами аутентификации, если не попытаетесь нажать изображение.

2.Если docker-registry аутентифицирует меня через index.docker.io, так где хранятся параметры авторизации? Я имею в виду, если я хочу предоставить пользователю возеров нажать только на private.repo.domain: репозиторий 5000/vozerov.

  • Параметры авторизации хранятся на вашем клиентском компьютере докеров в следующем файле (это скрытый файл, поэтому используйте ls -la). Файл называется:.dockercfg

  • Внутри этого файла вы находите данные учетных данных регистрации реестров, с которыми вы пытались войти в систему успешно:

    {
            "your_domain.com": {
                    "auth": "dXNlcjE6cGFzc3dvcmQxMjM="
                    "email": ""
    }
    
  • "auth" - это ваши базовые 64-х кодированные (имя пользователя: пароль) учетные данные

  • Частный реестр Docker предоставляет логин (только с помощью обратного прокси). Если вы хотите использовать полнофункциональную систему аутентификации, авторизации или контроля доступа на основе пользователей, вы можете посмотреть такие решения, как корпоративный реестр Artifactory или основной ОС

3. Докер выполняет поиск по индексу. Поэтому, если я хочу искать свои изображения в моем личном репозитории, мне нужно сообщить index.docker.io, что есть новый закрытый репозиторий. Является ли это реальным или я говорю что-то неправильно?

  • Поиск Docker Client через index.io, если вы не укажете, что хотите, чтобы он искал ваш частный реестр. Это поведение по умолчанию для докеров. Ваш приватный реестр докеров полностью отделен от официального индекса докеров, просто ничего общего с ним. Если вы хотите искать свой частный реестр в своем клиенте Docker, вот несколько команд, которые вы могли бы использовать: native или curl:
  • Использование curl (apt-get install jq):

    curl -s -X GET http://private.repo.domain:5000/v1/search | jq '.results[].name'
    
  • Использование поиска докеров:

    docker search private.repo.domain:5000/<search_keyword>
    

4. Я нашел проект docker-index в github - https://github.com/ekristen/docker-index. Это альтернатива для index.docker.io. Итак, если я установлю его, войдите в него, будет поиск команды поиска докеров через мой частный индекс или через index.docker.io?

  • Похоже, этот проект подходит к концу, поскольку Docker развертывается с новым реестром. Никогда не пробовал, поэтому я не знаю, какой реестр он ищет. Я бы предположил, что это то, что вы интегрируете с частным реестром, поскольку Docker Hub уже имеет собственный индекс, поэтому, если бы я сделал предположение, он будет искать ваш частный реестр.

Ответ 2

Если вам нужна аутентификация (и шифрование) в вашем частном реестре, вам нужно будет поместить nginx или apache перед докером в качестве прокси-сервера и использовать http-аутентификацию и завершение SSL там.

Насколько я могу судить, не существует способа, чтобы команда поиска докеров выполняла поиск в вашем частном реестре. Эта команда только ищет Docker Hub.

Ответ 3

Реестр Docker управляет изображениями докеров. Индекс Docker управляет аутентификацией. Реестр Docker с открытым исходным кодом, а индекс Docker не является открытым.

Если вы развертываете docker-реестр, вам необходимо выполнить проверку подлинности.

Индекс докеров может предоставить вам приватный реестр для докеров, отметьте this.