Аутентификация Docker / GitLab для реестра докеров возвращает ошибку 401

Я пытаюсь настроить свой реестр докеров, используя авторизацию gitlab (докеры).

Выполнение docker login registry.website.com дает мне ошибку 401 Неавторизованный:

Error response from daemon: login attempt to https://registry.website.com/v2/ failed with status: 401 Unauthorized

В журналах докеров нахожу

{ "level":"info","msg":"token signed by untrusted key with ID: \"IWNY:KT2H:YUN5:STQP:22LM:YNIU:RT4T:AZO7:TBVL:ZQ3I:Z4JZ:LA3T\"","time":"2018-12-17T23:36:03.538232467Z" }
{ [...] "level":"warning","msg":"error authorizing context: invalid token","service":"registry","source":"registry","time":"2018-12-17T23:36:03.53860308Z","version":"v2.6.2" }

Мои ключи генерируются путем выполнения

$ sudo openssl req -new -newkey rsa:4096 -subj "/CN=gitlab-issuer" -nodes -x509 -keyout registry-auth.key -out registry-auth.crt
$ sudo chmod 400 registry-auth.key

При попытке отладки я получаю другой дайджест sha256:

459b854f47c51bd94e0fd696cc35148cf93065df986abcc368cf13958373d298
459b854f47c51bd94e0fd696cc35148cf93065df986abcc368cf13958373

Как показал @VDR, это нормально, поскольку используются первые 30 символов. Так что проблем с ключами быть не должно. Но почему я получаю ошибку 401?

Вот как я настроил gitlab и реестр:

В конфигурации docker gitlab (gitlab.rb) используется ключ от

gitlab_rails['registry_key_path'] = "/certs/registry-auth.key"

Конфигурация реестра имеет

auth.token.rootcertbundle: /root/certs/registry-auth.crt

nginx-прокси / vhost.d / докер-реестр.conf

proxy_pass                          http://registry.website.com;
proxy_set_header  Host              $http_host;   # required for docker client's sake
proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP
proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
proxy_set_header  X-Forwarded-Proto $scheme;
proxy_read_timeout                  900;

Я не вижу, что мне здесь не хватает ...

На основании этой ссылки: gitlab.com/gitlab-org/gitlab-ce/blob/8-15-stable/lib/… Предполагается, что этот хэш является большей частью шестнадцатеричного дайджеста открытого ключа sha256 в формате DER (registry-auth.pub.der).

VDR 23.12.2018 20:23

@VDR Вы правы. Это докажет, что ключ, который я использую, правильный, но почему я получаю ошибку 401?

user3142695 24.12.2018 15:45

Вы за прокси?

Julien Lachal 26.12.2018 16:00

@JulienLachal Да, обратный прокси nginx

user3142695 26.12.2018 16:42

@JulienLachal Я использую jwilder/nginx-proxy.

user3142695 26.12.2018 18:02

Вы нашли что-нибудь об этом @ user3142695? У меня точно такая же проблема, и я понятия не имею, что происходит: '(

EricD 21.01.2019 00:13

@EricD К сожалению, я все еще сталкиваюсь с этой проблемой. Может быть, вы хотите начать за это вознаграждение?

user3142695 21.01.2019 07:22

@EricD Удалось ли вам решить вашу проблему?

user3142695 24.03.2019 00:26

какая у вас ОС, windows или linux?

Soleil 28.03.2019 17:46

@Soleil Linux, убунту

user3142695 28.03.2019 17:47

проверьте ваши часы на ваших машинах, те же самые в реестре и запросите

Soleil 28.03.2019 18:01
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
19
11
1 319
1

Ответы 1

Если ваш Gitlab находится за прокси, вам нужно будет настроить прокси в докере.

Чтобы настроить докер для использования прокси, поместите следующее в файл ~/.docker/config.json, в котором запущен ваш докер.

{
  "auths" : {

  },
  "proxies":
  {
    "default":
    {
      "httpProxy": "http://myproxy/",
      "httpsProxy": "http://myproxy/"
    }
  }
}

Если в разделе "auths": {} что-то уже есть, оставьте все как есть.

Сохраните этот файл и перезапустите демон Docker. После резервного копирования докера вы сможете без проблем запустить docker login ....

Я не понимаю, что мне нужно использовать для myproxy. Я использую конструктор обратного прокси / nginx-proxy

user3142695 22.01.2019 21:03
myproxy будет доменом прокси, за которым находится ваш Gitlab.
grizzthedj 22.01.2019 21:46

Другие вопросы по теме