tôi đã thiết lập một registry tin Docker (v2) trên một hộp CentOS 7 sau tài liệu chính thức của họ: https://docs.docker.com/registry/deploying/HTTP response bị thay đổi với registry Docker tin (v2) đằng sau một nginx Proxy
Tôi đang chạy Docker 1.6.0 trên một hộp Fedora 21.
Sổ đăng ký đang chạy trên cổng 5000 và đang sử dụng khóa SSL có chữ ký của CA đáng tin cậy. Tôi đặt bản ghi DNS cho 'docker-registry.example.com' làm IP nội bộ của máy chủ. Chạy 'docker pull docker-registry.example.com respect000/tag/image', nó hoạt động như mong đợi.
Tôi thiết lập máy chủ nginx, chạy phiên bản nginx: nginx/1.8.0 và thiết lập bản ghi dns cho 'nginx-proxy.example.com' trỏ đến máy chủ nginx và thiết lập trang web. Dưới đây là cấu hình:
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;
}
}
Khi tôi cố gắng chạy 'Docker kéo nginx-proxy.example.com/tag/image' Tôi nhận được lỗi sau:
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"
Câu hỏi của tôi là gấp đôi.
- Tại sao trình docker tìm kiếm/v1_/ping?
- Tại sao tôi lại thấy các 'phản ứng http bị thay đổi'
Nếu tôi chạy 'curl -v nginx-proxy.example.com/v2' Tôi thấy:
[[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
Nếu tôi làm ' curl -v docker-registry.example.com 'Tôi nhận được phản hồi 200 OK. Vì vậy, nginx phải chịu trách nhiệm về điều này. Có ai có một ý tưởng tại sao điều này đang xảy ra? Nó làm tôi phát điên!
Cảm ơn! Điều đó đã làm điều đó. Tôi biết nó sẽ là một cái gì đó hiển nhiên ...... Ngoài ra, tôi đã thay đổi các trường hợp 'domain.com' thành 'example.com' –