2017-02-21 17 views
0

Я пытаюсь запустить частный реестр докеров.Private Docker Registry with Azure Storage и Nginx: 502 Bad Gateway

docker run -d -p 5000:5000 --name registry \ 
    -v /opt/registry/config.yml:/etc/docker/registry/config.yml \ 
    registry 

config.yml:

version: 0.1 
log: 
    level: debug 
storage: 
    azure: 
    accountname: ... 
    accountkey: ... 
    container: registry 

впоследствии реестр

docker logs -f registry 

имеет следующий вывод:

time="2017-02-21T16:29:45.584228329Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.7.3 instance.id=99dc49a2-d0c5-4d5f-8e2f-1b1ed77ec012 version=v2.6.0 
time="2017-02-21T16:29:45.584439534Z" level=info msg="redis not configured" go.version=go1.7.3 instance.id=99dc49a2-d0c5-4d5f-8e2f-1b1ed77ec012 version=v2.6.0 
time="2017-02-21T16:29:45.595020552Z" level=info msg="Starting upload purge in 10m0s" go.version=go1.7.3 instance.id=99dc49a2-d0c5-4d5f-8e2f-1b1ed77ec012 version=v2.6.0 
time="2017-02-21T16:29:45.623443737Z" level=info msg="listening on [::]:45908" go.version=go1.7.3 instance.id=99dc49a2-d0c5-4d5f-8e2f-1b1ed77ec012 version=v2.6.0 
time="2017-02-21T16:39:45.595199645Z" level=info msg="PurgeUploads starting: olderThan=2017-02-14 16:39:45.595164544 +0000 UTC, actuallyDelete=true" 
time="2017-02-21T16:39:45.641492799Z" level=debug msg="azure.List(\"/docker/registry/v2/repositories\")" go.version=go1.7.3 instance.id=99dc49a2-d0c5-4d5f-8e2f-1b1ed77ec012 trace.duration=46.132851ms trace.file="/go/src/github.com/docker/distribution/registry/storage/driver/base/base.go" trace.func="github.com/docker/distribution/registry/storage/driver/base.(*Base).List" trace.id=22a8eafa-43d4-4de4-9971-290cd9b12df6 trace.line=150 version=v2.6.0 
time="2017-02-21T16:39:45.641583901Z" level=info msg="Purge uploads finished. Num deleted=0, num errors=1" 
time="2017-02-21T16:39:45.641605301Z" level=info msg="Starting upload purge in 24h0m0s" go.version=go1.7.3 instance.id=99dc49a2-d0c5-4d5f-8e2f-1b1ed77ec012 version=v2.6.0 

Nginx:

server { 
    listen 80; 
    server_name registry.example.com; 
    return 301 https://$host$request_uri; 
} 

server { 
    listen 443 ssl; 
    server_name registry.example.com; 

    ssl_certificate  /opt/certificates/fullchain.pem; 
    ssl_certificate_key /opt/certificates/privkey.pem; 

    ssl on; 
    ssl_session_cache shared:SSL:10m; 

    location/{ 
     proxy_pass  http://localhost:5000/; 
     proxy_redirect default; 

     proxy_set_header Docker-Distribution-Api-Version registry/2.0; 
     proxy_set_header Host    $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; 
     client_max_body_size 0; 
    } 
} 

Однако я постоянно получаю «502 Bad Gateway», когда я хочу, чтобы подтолкнуть изображение в реестр, или когда я иду в https://registry.example.com

ответ

-1
  • Я бы удалить HTTP-> HTTPS перенаправлять как первый отладки шаг

`` `

server { 
    listen 80; 
    server_name registry.example.com; 
    return 301 https://$host$request_uri; 
} 
  • Дважды проверьте путь реестра с curl localhost:5000 команды

  • Вам также необходимо будет обновить прокси заголовки:

`` `

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; 
  • Вы должны также рассмотреть возможность добавления заголовков AUTH для обеспечения вашего реестра

auth_basic "Registry realm"; auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd;

Также я вижу из журналов, что ваш реестр работает локально. Nginx выбрасывает ошибку 502, когда целевой ресурс nginx-proxy не отвечает должным образом. Вы также можете попробовать 127.0.0.1:5000 под прокси-пропуск. Существует также способ отображения портов docker-compose для следующих link.