Проверка подлинности Docker / GitLab для реестра Docker возвращает ошибку 401 - PullRequest
0 голосов
/ 18 декабря 2018

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

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

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-proxy / vhost.d / docker-registry.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;

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

1 Ответ

0 голосов
/ 22 января 2019

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

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

{
  "auths" : {

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

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

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

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