2015-10-30 3 views
10

मैं आर्टिफैक्टरी को डॉकर रिपोजिटरी के रूप में स्थापित कर रहा हूं। मैंने प्रलेखन का पालन किया और मैं अपने आभासी डॉकर रेपो से छवियों को सफलतापूर्वक खींचने में सक्षम हूं।501 आर्टिफैक्टरी डॉकर रिपोजिटरी को दबाते समय कार्यान्वित नहीं किया गया

हालांकि, जब मैं एक स्थानीय भंडार में एक छवि को धक्का देने की कोशिश करता हूं, तो यह 501 कार्यान्वित त्रुटि के साथ विफल रहता है।

यह मेरा सेटअप है:

Nginx रिवर्स प्रॉक्सी है:

artifactory.somedomain.com:8085 -> http://localhost:8081/artifactory/api/docker/docker-local/v2 
artifactory.somedomain.com:8086 -> http://localhost:8081/artifactory/api/docker/docker/v2 
  • डोकर-स्थानीय एक स्थानीय भंडार, एपीआई V2 है, प्रमाणीकरण के लिए मजबूर नहीं है। कोई अन्य सेटिंग सेट नहीं है।
  • डोकर एक आभासी भंडार है, एकत्रित करता है जिसकी डोकर-स्थानीय और डोकर-दूरस्थ (जो सिर्फ प्रॉक्सी डोकर रेपो एसटीडी)

आदेश चलाएँ:

docker pull artifactory.somedomain.com:8086/busybox:latest 
docker tag artifactory.somedomain.com:8086/busybox artifactory.somedomain.com:8085/busybox 
docker push artifactory.somedomain.com:8085/busybox 

में परिणाम:

The push refers to a repository [artifactory.somedomain.com:8085/busybox] (len: 1) 
2c5ac3f849df: Buffering to Disk 
Received unexpected HTTP status: 501 Not Implemented 

कोई विचार गलत क्या हो सकता है? धन्यवाद!

nginx.conf (पहले दो नियमों सामान्य रूप में http पुनः निर्देशित संभाल, पिछले दो नियमों डोकर भंडार के लिए प्रॉक्सी संभाल)

# For more information on configuration, see: 
# * Official English Documentation: http://nginx.org/en/docs/ 
# * Official Russian Documentation: http://nginx.org/ru/docs/ 

user nginx; 
worker_processes auto; 
error_log /var/log/nginx/error.log; 
pid /run/nginx.pid; 

events { 
    worker_connections 1024; 
} 

http { 
    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
         '$status $body_bytes_sent "$http_referer" ' 
         '"$http_user_agent" "$http_x_forwarded_for"'; 

    access_log /var/log/nginx/access.log main; 

    sendfile   on; 
    tcp_nopush   on; 
    tcp_nodelay   on; 
    keepalive_timeout 65; 
    types_hash_max_size 2048; 

    client_max_body_size 1G; 

    include    /etc/nginx/mime.types; 
    default_type  application/octet-stream; 

    # Load modular configuration files from the /etc/nginx/conf.d directory. 
    # See http://nginx.org/en/docs/ngx_core_module.html#include 
    # for more information. 
    include /etc/nginx/conf.d/*.conf; 

     server { 
       listen 80; 
       server_name artifactory.somedomain.com; 
       return 301 https://$server_name$request_uri; 
     } 

     server { 
      listen 443; 
      server_name artifactory.somedomain.com; 

      access_log /var/log/nginx/artifactory.yourdomain.com.access.log; 
      error_log /var/log/nginx/artifactory.yourdomain.com.error.log; 

      ssl on; 
      ssl_certificate /etc/nginx/cert/artifactory-cert-chain.crt; 
      ssl_certificate_key /etc/nginx/cert/artifactory.key; 

      ssl_session_timeout 5m; 

      ssl_protocols SSLv3 TLSv1; 
      ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; 
      ssl_prefer_server_ciphers on; 

      location/{ 
       proxy_redirect http:// https://; 
       proxy_set_header Host $host:$server_port; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
       proxy_set_header X-Real-IP $remote_addr; 
       proxy_set_header X-Forwarded-Ssl on; 
       proxy_set_header X-Forwarded-Proto $scheme; 
       proxy_pass http://localhost:8081; 
       proxy_pass_header Server; 
       proxy_read_timeout 90; 
      } 
     } 

     server { 
      listen 8085; 
      server_name artifactory.somedomain.com; 

      ssl on; 
      ssl_certificate /etc/nginx/cert/artifactory-cert-chain.crt; 
      ssl_certificate_key /etc/nginx/cert/artifactory.key; 

      access_log /var/log/nginx/artprod.company.com.access.log; 
      error_log /var/log/nginx/artprod.company.com.error.log; 

      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_pass_header Server; # To help debugging, list the server that actually did the reply rather than nginx 
      proxy_read_timeout 900; 

      client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads 

      # required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486) 
      chunked_transfer_encoding on; 

      location /v2 { 
       # Do not allow connections from docker 1.5 and earlier 
       # docker pre-1.6.0 did not properly set the user agent on ping 
       if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))).*$") { 
        return 404; 
       } 

       proxy_pass http://localhost:8081/artifactory/api/docker/docker-local/v2; 
     } 
    } 

     server { 
      listen 8086; 
      server_name artifactory.somedomain.com; 

      ssl on; 
      ssl_certificate /etc/nginx/cert/artifactory-cert-chain.crt; 

      ssl_certificate_key /etc/nginx/cert/artifactory.key; 

      access_log /var/log/nginx/artprod.company.com.access.log; 
      error_log /var/log/nginx/artprod.company.com.error.log; 

      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_pass_header Server; # To help debugging, list the server that actually did the reply rather than nginx 
      proxy_read_timeout 900; 

      client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads 

      # required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486) 
      chunked_transfer_encoding on; 

      location /v2 { 
       # Do not allow connections from docker 1.5 and earlier 
       # docker pre-1.6.0 did not properly set the user agent on ping 
       if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))).*$") { 
       return 404; 
       } 

       proxy_pass http://localhost:8081/artifactory/api/docker/docker/v2; 
     } 
    } 

} 

nginx की पहुँच को लॉग प्रत्येक अनुरोध के लिए इस से पता चलता

192.168.33.65 - - [02/Nov/2015:13:04:56 +0100] "GET /v2/ HTTP/1.1" 200 12 "-" "docker/1.8.3 go/go1.4.2 git-commit/f4bf5c7 kernel/4.1.10-boot2docker os/linux arch/amd64" 
192.168.33.65 - - [02/Nov/2015:13:04:57 +0100] "HEAD /v2/busybox/blobs/sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 HTTP/1.1" 404 0 "-" "docker/1.8.3 go/go1.4.2 git-commit/f4bf5c7 kernel/4.1.10-boot2docker os/linux arch/amd64" 
192.168.33.65 - - [02/Nov/2015:13:04:57 +0100] "POST /v2/busybox/blobs/uploads/ HTTP/1.1" 202 0 "-" "docker/1.8.3 go/go1.4.2 git-commit/f4bf5c7 kernel/4.1.10-boot2docker os/linux arch/amd64" 
+1

ऐसा लगता है कि आपका निगिक्स केवल अनुरोध प्राप्त करता है, लेकिन अनुरोध नहीं करता है। क्या आप कृपया ngnix कॉन्फ़िगरेशन पोस्ट कर सकते हैं? – JBaruch

+0

निश्चित रूप से, मैंने सवाल अपडेट किया। –

+0

हालांकि, मुझे लगता है कि यह मामला नहीं है। मैंने आर्टिफैक्ट्री को कलाकृतियों को सफलतापूर्वक पुश करने के लिए 'curl -XPUT' का उपयोग किया है (हालांकि डॉकर रजिस्ट्री के लिए नहीं) –

उत्तर

4

यह समस्या NginX की कॉन्फ़िगरेशन के साथ थी। आर्टिफैक्टरी दस्तावेज में प्रदान किया गया नमूना मानता है कि आप भंडार से कनेक्ट करने के लिए HTTPS पोर्ट 443 का उपयोग कर रहे हैं।

आप एक अलग बंदरगाह का उपयोग कर रहे हैं, तो आप listenऔरproxy_set_header Host निर्देश संपादित करने के लिए पोर्ट को शामिल करने की जरूरत है।

server { 
    listen <port>; 
    ... 
    proxy_set_header Host $host:<port>; 
    ... 
} 
संबंधित मुद्दे