chuikoffru
@chuikoffru
Full Stack JS Developer

Почему возникает ошибка 400 при попытке docker login к приватному docker registry по домену?

Коллеги, добрых суток!

Поднял приватный docker registry используя официальную документацию.
Сделал basic авторизацию, сделал сертификаты, все как полагается. Настроил nginx.
Выполняю docker login localhost:5000, логин и пароль проходят без проблем.
Но если пытаюсь авторизоваться по домену docker login registry.domain.name, получаю ошибку 400.

Error response from daemon: login attempt to https://registry.domain.name/v2/ failed with status: 400 Bad Request


Судя по тому, что docker login localhost:5000 отрабатывает, наверно проблема в nginx. Конфиг прилагаю:
nginx.conf

upstream registry {
  server 0.0.0.0:5000;
}

map $upstream_http_docker_distribution_api_version $docker_distribution_api_version {
    '' 'registry/2.0';
}

server {
  listen *:80;
  server_name registry.domain.name;
  server_tokens off;
  return 301 https://registry.domain.name:443$request_uri;
}

server {
  listen 443 ssl;
  server_name registry.domain.name;

  access_log  /var/log/nginx/registry.domain.name.access.log;
  error_log  /var/log/nginx/registry.domain.name.error_log warn;
  
  ssl_certificate /home/user/docker-registry/certs/registry.domain.name.crt;       
  ssl_certificate_key /home/user/docker-registry/certs/registry.domain.name.key; 
  
  ssl_protocols TLSv1.1 TLSv1.2;
  ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

  client_max_body_size 0;
  chunked_transfer_encoding on;

  location /v2/ {
   if ($http_user_agent ~ "^(docker/1.(3|4|5(?!.[0-9]-dev))|Go ).*$" ) {
     return 404;
   }

   add_header 'Docker-Distribution-Api-Version' $docker_distribution_api_version always;

   proxy_set_header  Host              $http_host;
   proxy_set_header  X-Real-IP         $remote_addr;
   proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
   proxy_set_header  X-Forwarded-Proto $scheme;
   proxy_read_timeout                  900;
   proxy_pass http://registry;
  }
}

  • Вопрос задан
  • 571 просмотр
Решения вопроса 1
@Zerg89
Это косяк докер контейнера docker registry
github issued
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы