Как использовать несколько авторизаций / логинов для одного реестра Docker - PullRequest
0 голосов
/ 04 мая 2018

Я использую последнюю версию gitlab и интегрированный реестр докеров. Для каждого проекта я создаю отдельный токен развертывания. На хосте, где я хочу развернуть образы, которые я делаю docker login https://registry.example.com/project1, введите токен развертывания и получите успех. Вытягивание изображения просто отлично работает.

На том же хосте мне нужно развернуть другой образ из того же реестра. Поэтому я делаю docker login https://registry.example.com/project2, токен развертывания (который отличается от токена 1, поскольку каждый проект имеет свои токены развертывания), и получаю успех.

Однако, глядя на .docker/config.json, я вижу, что докер просто сохраняет домен, а не полный URL, и заменяет старый токен аутентификации новым. Так что теперь я могу тянуть только изображение 2, но больше не изображение 1.

Это ошибка в докере? Как использовать более одного токена авторизации / развертывания для одного и того же реестра?

Ответы [ 4 ]

0 голосов
/ 25 июня 2019

У меня была такая же проблема, и мой обходной путь сейчас заключается в использовании выделенного пользователя / токена:

  1. Создать нового пользователя
  2. Добавить пользователя ко всем нужным вам проектам с ролью Reporter
  3. Создать новый Personal Access Token с областью действия read_registry

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

docker login https://registry.example.com -u REPORTER_USER -p PERSONAL_ACCESS_TOKEN

Это должно сработать, вы также можете создать токен с существующим пользователем

0 голосов
/ 23 октября 2018

Содержимое моего файла compose.yml:

version: '3.5'
services:

    test1:
        image: <mygitlabregistryurl>/project1
        deploy:
            replicas: 1

    test2:
        image: <mygitlabregistryurl>/project2
        deploy:
            replicas: 1     

Есть 2 способа решения.

  • Вы можете login с помощью следующей команды, но затем вы должны сделать обновления службы вместе с CI.

    docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
    
  • Для авторизованного пользователя в проекте вы можете создать личный токен доступа с разрешением read_registry и использовать следующую команду.

    docker login -u <username> -p <access_token> $CI_REGISTRY
    

Документы Gitlab здесь: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#authenticating-to-the-container-registry

0 голосов
/ 11 апреля 2019

Вы можете использовать опцию - config клиента Docker для хранения нескольких учетных данных по разным путям:

docker --config ~/.project1 login registry.example.com -u <username> -p <deploy_token>
docker --config ~/.project2 login registry.example.com -u <username> -p <deploy_token> 

Затем вы можете вызывать команды Docker, выбирая свои учетные данные:

docker --config ~/.project1 pull registry.example.com/project1
docker --config ~/.project2 pull registry.example.com/project2

Надеюсь, это поможет.

0 голосов
/ 31 июля 2018

В настоящее время это невозможно. Смотри https://github.com/moby/moby/issues/37569.

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

export DOCKER_CONFIG .docker
cd your-docker-project
docker login registry.example.com
docker-compose pull

cd ../other project
# repeat steps here

Таким образом, изменяя каталог, вы изменяете учетные данные. Вы должны cd использовать git и docker-compose в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...