डॉकर पुल: टीएलएस हैंडशेक टाइमआउट


14

मुझे यह निरंतर रूप से मिलता है (Ubuntu 16.04 LTS):

$ docker pull nginx
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout

हालांकि कर्ल टीएलएस ठीक काम करता है (ऑर्टिकल एरर के अलावा):

$ curl https://registry-1.docker.io/v2/
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}

और यहां तक ​​कि एक छोटा गोलंग कार्यक्रम (नकल करने के लिए) ठीक काम करता है:

package main
import (
    "fmt"
    "io/ioutil"
    "net/http"
)
func main() {
    resp, err := http.Get("https://registry-1.docker.io/v2/")
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }
    fmt.Println("Got: ", string(body))
}

डॉक टीएलएस टाइमआउट अनुरोध के लिए pcap:

reading from file docker-timeout.pcap, link-type LINUX_SLL (Linux cooked)
00:38:54.782452 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [S], seq 26945613, win 29200, options [mss 1460,sackOK,TS val 1609360 ecr 0,nop,wscale 7], length 0
00:38:54.878630 IP registry-1.docker.io.https > my-ubuntu.52036: Flags [S.], seq 2700732154, ack 26945614, win 26847, options [mss 1460,sackOK,TS val 947941366 ecr 1609360,nop,wscale 8], length 0
00:38:54.878691 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [.], ack 1, win 229, options [nop,nop,TS val 1609384 ecr 947941366], length 0
00:38:54.878892 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [P.], seq 1:156, ack 1, win 229, options [nop,nop,TS val 1609384 ecr 947941366], length 155
00:38:55.175931 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [P.], seq 1:156, ack 1, win 229, options [nop,nop,TS val 1609459 ecr 947941366], length 155
00:38:55.475954 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [P.], seq 1:156, ack 1, win 229, options [nop,nop,TS val 1609534 ecr 947941366], length 155
00:38:56.076327 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [P.], seq 1:156, ack 1, win 229, options [nop,nop,TS val 1609684 ecr 947941366], length 155
00:38:57.280103 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [P.], seq 1:156, ack 1, win 229, options [nop,nop,TS val 1609985 ecr 947941366], length 155
00:38:59.684095 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [P.], seq 1:156, ack 1, win 229, options [nop,nop,TS val 1610586 ecr 947941366], length 155
00:39:04.492102 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [P.], seq 1:156, ack 1, win 229, options [nop,nop,TS val 1611788 ecr 947941366], length 155
00:39:04.879468 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [F.], seq 156, ack 1, win 229, options [nop,nop,TS val 1611884 ecr 947941366], length 0
00:39:04.976015 IP registry-1.docker.io.https > my-ubuntu.52036: Flags [.], ack 1, win 105, options [nop,nop,TS val 947943890 ecr 1609384,nop,nop,sack 1 {156:157}], length 0
00:39:04.976073 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [P.], seq 1:156, ack 1, win 229, options [nop,nop,TS val 1611909 ecr 947943890], length 155
00:39:05.275922 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [P.], seq 1:156, ack 1, win 229, options [nop,nop,TS val 1611984 ecr 947943890], length 155
00:39:05.876104 IP my-ubuntu.52036 > registry-1.docker.io.https: Flags [P.], seq 1:156, ack 1, win 229, options [nop,nop,TS val 1612134 ecr 947943890], length 155

संभवतः क्या गलत हो सकता है?


1
मैंने अपने डीएसएल मॉडेम को स्वैप किया और समस्या दूर हो गई ... मुझे संदेह है कि यह एक एमटू समस्या थी।
विलेम

जवाबों:


14

net/http: TLS handshake timeoutइसका मतलब है कि आपके पास धीमा इंटरनेट कनेक्शन है। कनेक्शन टाइमआउट का डिफ़ॉल्ट मान आपके वातावरण के लिए बहुत छोटा है। दुर्भाग्य से डॉकटर के पास कोई सेटिंग नहीं है जो आपको कनेक्शन टाइमआउट बदलने की अनुमति देता है। आप कहीं और अपनी खुद की रजिस्ट्री कैश बनाने की कोशिश कर सकते हैं और उससे चित्र खींच सकते हैं।


1
खैर, speedtest.netऔर fast.comमेरी इंटरनेट की गति 90 Mbit / s है। क्या यह धीमा है? मैं python:2.7-slimछवि खींच रहा हूं । मैं hello-worldहब से खींचने में सक्षम हूं लेकिन अजगर से नहीं। यह मुझे एक ही TLS handshake timeoutत्रुटि देता है ।
निखिल चिलवंत

3
इससे पहले कि लोग कुछ नाटकीय करना शुरू करें मैं टिप्पणी करना चाहता हूं: छवि के नाम में एक टाइपो होने से भी वही त्रुटि होती है। बहुत वर्णनात्मक।
Barafu Albino

1
ज्यादातर टीएलएस हैंडशेक टाइमआउट का मतलब यह नहीं है कि इंटरनेट कनेक्शन धीमा होना है। यह संदेश भी दिखाई देगा, अगर टीएलएस हैंडशेक अलग-अलग कारणों से बंद हो जाता है। उदाहरण के लिए, यदि एक पक्ष किसी विशिष्ट टीएलएस संस्करण के साथ या प्रमाणपत्र-समस्या के कारण बात करना पसंद नहीं करता है।
बंड्र

4

मेरे मामले में मेरा सर्वर नेट और प्रॉक्सी के पीछे था और प्रॉक्सी को ऑटो डिटेक्ट करने के लिए सेट किया गया था कि मैंने वर्तमान टर्मिनल पर क्या किया है, मेरे पास प्रॉक्सी सेटिंग्स हैं

root@k8master:~/runner# export http_proxy="http://192.168.10.208:3128"
root@k8master:~/runner# docker pull gitlab/gitlab-runner:latest
latest: Pulling from gitlab/gitlab-runner
7b722c1070cd: Pull complete 
5fbf74db61f1: Pull complete 
ed41cb72e5c9: Pull complete 
7ea47a67709e: Pull complete 
ae336ceeca88: Pull complete 
f9f79780e6cf: Pull complete 
67e622273f37: Pull complete 
bc84c40af701: Pull complete 
69e36092e9de: Pull complete 
Digest: sha256:b1f5387942aaaf8c220f6613a1e96ba2cbcb6c58a5e47ca0df8ae3216720a15e
Status: Downloaded newer image for gitlab/gitlab-runner:latest

3

मुझे docker run hello-world1 समय का उपयोग करके एक समान समस्या थी , जिसके परिणामस्वरूप एक छवि का उपयोग करके डाउनलोड किया जाता है https://registry-1.docker.io/v2/, जो समाप्त होता है

docker: Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: net/http: TLS handshake timeout.

वेब को घंटों खोजा और पता चला, कि यह कुछ उपयोगकर्ताओं के साथ ubuntu 18.04 और वर्तमान डॉकटर रिलीज के बाद होता है। केवल http-प्रॉक्सी कॉन्फ़िगरेशन को छोड़ने के लिए, http (नहीं https) डाउनलोड को बाध्य करने के लिए सभी https-प्रॉक्सी कॉन्फ़िगरेशन को हटाने के लिए एक वर्कअराउंड है।

पता नहीं, असली कारण क्या है।

(वैसे: मुझे संगीतकार और पैकैगिस्ट के साथ एक समान "टीएलएस हैंडशेक" समस्या थी। यह एक गुम cacert.pem फ़ाइल के कारण था, जिसे डिफ़ॉल्ट रूप से ubuntu द्वारा प्रदान नहीं किया गया था। शायद यह डॉकटर-समस्या उसी दिशा में जा रही है। ?)


3

मैं उसी समस्या का अनुभव करता हूं। तब आज़मट हैकिमोव के जवाब ने मुझे सही दिशा में इशारा किया। मेरी मशीन कुछ धीमी है, खासकर बूट समय पर, जब मैं सेवा लॉन्च करना चाहता हूं। इसलिए कम समय समाप्त हो जाता है और मेरे अनुरोध को मारता है।

यह मेरा काम है:

docker pull $IMAGE || docker pull $IMAGE ||  docker pull $IMAGE || docker pull $IMAGE

बस अनुरोध के साथ सर्वर हथौड़ा। आमतौर पर दूसरा मेरे लिए सफल होता है।


एक निश्चित समाधान नहीं है, लेकिन अस्थायी वर्कअराउंड के रूप में अच्छा है
गोंजालो काओ

2

यदि आप एक निजी रजिस्ट्री का उपयोग कर रहे हैं, तो आपको /etc/docker/certs.d/ रजिस्ट्री नाम /ca.crt के तहत प्रमाण पत्र देना होगा।

तदनुसार रजिस्ट्री का नाम बदल जाएगा

इसके अलावा, कृपया अपने MTU के आकार को 1300 में बदलें , यह भी एक चीज थी जो मैंने त्रुटि को हल करने के लिए की थी। रजिस्ट्री एक मेरा मानना ​​है कि आप पहले ही कर चुके होंगे। एमटीयू परिवर्तन के लिए कमान

ip link set dev eth0 mtu 1300

यदि आप इंटरनेट की गति वास्तव में अच्छी है, तो इस त्रुटि से बचने के लिए MTU का आकार जांचना महत्वपूर्ण है


यह एक अच्छा सुझाव है, लेकिन प्रमाण पत्र नहीं होने के परिणामस्वरूप x509: certificate signed by unknown authorityत्रुटि होगी, नहीं TLS handshake timeout
वारबीस

0

मेरे लिए जो काम किया गया वह एक अलग नेटवर्क इंटरफेस का उपयोग करना था। ईथरनेट (वायर्ड) के माध्यम से कनेक्ट करने के बजाय, मैंने वाईफाई पर स्विच किया। समस्या सुलझ गयी।

मैं रास्पियन स्ट्रेच की एक ताजा स्थापना पर था, वैसे।


0

उपरोक्त उत्तर में से कोई भी मेरी समस्या को हल नहीं कर सकता है, हालांकि मैंने पाया कि नीचे https://github.com/helm/helm/issues/5220 मेरे लिए काम करता है!

उस बदलाव के बाद मेरी कंपनी के आईटी एपार्टमेंट ने एक समाधान ढूंढ लिया है। मैंने हमारे प्रॉक्सी के लिए https: // url के साथ https_proxy पर्यावरण चर का उपयोग किया। यह उन अधिकांश उपकरणों के लिए काम करता है जिनका हम उपयोग कर रहे हैं, लेकिन पतवार या नए क्यूब के लिए नहीं। उन्हें लगता है कि टीएलएस हैंडशेक के साथ कुछ समस्याएं हैं। हमने https: // से एक http: // url (जैसे https_proxy = http: // myproxy ) पर स्विच किया और अब सबकुछ ठीक हो गया।


0

TLS handshake timeoutयदि आपका डॉक डेमॉन प्रॉक्सी ठीक से कॉन्फ़िगर नहीं किया गया है, तो आप त्रुटि प्राप्त कर सकते हैं ।

# verify docker daemon proxy configuration
/etc/systemd/system/docker.service.d/proxy.conf

# flush changes
sudo systemctl daemon-reload

# restart docker service
sudo systemctl restart docker 

अधिक जानकारी के लिए, https://docs.docker.com/config/daemon/systemd/#httphttps-proxy देखें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.