Ich habe Setup ein Docker private Register (v2) auf einer CentOS 7 Box nach ihrer offiziellen Dokumentation: https://docs.docker.com/registry/deploying/fehlerhafte HTTP-Antwort mit Docker privaten Registry (v2) hinter einem Proxy-nginx
Ich bin mit Docker 1.6.0 auf eine Fedora 21 Box.
Die Registrierung wird auf Port 5000 ausgeführt und verwendet einen SSL-Schlüssel, der von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde. Ich stelle einen DNS-Eintrag für 'docker-registry.example.com' als interne IP des Servers ein. Running 'docker pull docker-registry.example.com:5000/tag/image' funktioniert wie erwartet.
Ich habe einen Nginx-Server mit der nginx-Version: nginx/1.8.0 eingerichtet und einen DNS-Record für 'nginx-proxy.example.com' eingerichtet, der auf den nginx-Server verweist und eine Site einrichtet. Hier ist die config:
server {
listen 443 ssl;
server_name nginx-proxy.example.com;
add_header Docker-Distribution-Api-Version: registry/2.0 always;
ssl on;
ssl_certificate /etc/ssl/certs/cert.crt;
ssl_certificate_key /etc/ssl/certs/key.key;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header Docker-Distribution-Api-Version registry/2.0;
location/{
proxy_pass http://docker-registry.example.com:5000;
}
}
Wenn ich versuche zu laufen 'Docker ziehen nginx-proxy.example.com/tag/image' bekomme ich folgende Fehlermeldung:
FATA[0001] Error response from daemon: v1 ping attempt failed with error: Get https://nginx-proxy.example.com/v1/_ping: malformed HTTP response "\x15\x03\x01\x00\x02\x02"
Meine Frage ist zweifach.
- Warum sucht der Docker-Client nach dem/v1_/ping?
- Warum sehe ich die 'Ungültige HTTP-Antwort'
Wenn ich laufen 'curl -v nginx-proxy.example.com/v2' Ich sehe:
[[email protected] amerenda] $ curl -v https://nginx-proxy.example.com/v2/
* Hostname was NOT found in DNS cache
* Trying 10.1.43.165...
* Connected to nginx-proxy.example.com (10.1.43.165) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=*.example.com,O="example, Inc.",L=New York,ST=New York,C=US
* start date: Sep 15 00:00:00 2014 GMT
* expire date: Sep 15 23:59:59 2015 GMT
* common name: *.example.com
* issuer: CN=GeoTrust SSL CA - G2,O=GeoTrust Inc.,C=US
> GET /v2/ HTTP/1.1
> User-Agent: curl/7.37.0
> Host: nginx-proxy.example.com
> Accept: */*
> \x15\x03\x01\x00\x02\x02
Wenn ich 'tun curl -v docker-registry.example.com 'Ich bekomme eine 200 OK-Antwort. Also muss nginx dafür verantwortlich sein. Hat jemand eine Idee, warum das passiert? Es macht mich wahnsinnig!
Danke! Das hat es getan. Ich wusste, dass es etwas Offensichtliches wäre ... Außerdem habe ich die Instanzen von "domain.com" in "example.com" geändert. –