ডকার টান: টিএলএস হ্যান্ডশেক টাইমআউট


14

আমি এটি ধারাবাহিকভাবে পাই (উবুন্টু 16.04 এলটিএস):

$ 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))
}

ডকার টিএলএস সময়সীমা অনুরোধের জন্য পিসিএপ:

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 এমবিট / সেকেন্ডে দেখান। এটা কি ধীর? আমি python:2.7-slimছবি টানছি আমি hello-worldহাব থেকে টানতে সক্ষম তবে অজগরটি নয়। এটি আমাকে একই TLS handshake timeoutত্রুটি দেয় ।
নিখিল চিলওয়ান্ট

3
লোকেরা নাটকীয় কিছু শুরু করার আগে আমি মন্তব্য করতে চাই: চিত্রের নামে টাইপো রাখলে একই ত্রুটি ঘটে। খুব বর্ণনামূলক।
বড়ফু আলবিনো 21

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.

ঘন্টার পর ঘন্টা ওয়েব অনুসন্ধান করে জানা গেছে যে উবুন্টু 18.04 সহ কিছু ব্যবহারকারী এবং বর্তমান ডক রিলিজের সাথে একটি প্রক্সি পিছনে এটি ঘটে। একটি কর্মশক্তি হ'ল কোনও HTTP (https নয়) ডাউনলোড করতে বাধ্য করার জন্য, কেবলমাত্র http- প্রক্সি কনফিগারেশনটি ছেড়ে যাওয়ার জন্য সমস্ত https-প্রক্সি কনফিগারেশন সরিয়ে ফেলা হয়।

জানেন না, আসল কারণটা কী।

(উপায় দ্বারা: আমার সুরকার এবং প্যাকেজিস্টের সাথে একটি সমান "টিএলএস হ্যান্ডশেক" সমস্যা ছিল This এটি অনুপস্থিত cacert.pem ফাইলের কারণে, যা উবুন্টু ডিফল্টরূপে সরবরাহ করে না Maybe সম্ভবত এই ডকার-সমস্যা একই দিকে চলে যাচ্ছে ?)


3

আমি একই সমস্যা অভিজ্ঞতা। তারপরে আজামাত হ্যাকিমভের উত্তর আমাকে সঠিক দিক নির্দেশ করেছে। আমার পরিষেবাটি কিছুটা ধীরে ধীরে, বিশেষত বুটের সময়, যখন আমি পরিষেবাটি চালু করতে চাই। অতএব সংক্ষিপ্ত সময়সীমা আমার অনুরোধটিকে কিল মারে এবং হত্যা করে।

এটি আমার কাজ

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

কেবল অনুরোধ সহ সার্ভারটি হাতুড়ি করুন। সাধারণত দ্বিতীয়টি আমার পক্ষে সফল।


একটি চূড়ান্ত সমাধান নয় তবে একটি অস্থায়ী কর্মক্ষেত্র হিসাবে ভাল
গঞ্জালালো কও

2

আপনি যদি একটি বেসরকারী রেজিস্ট্রি ব্যবহার করেন তবে আপনাকে তার জন্য /etc/docker/certs.d/ রেজিস্ট্রি / cc.crt এর শংসাপত্র স্থাপন করতে হবে

রেজিস্ট্রি নাম অনুসারে পরিবর্তন হবে

এছাড়াও, দয়া করে আপনার এমটিইউ আকার 1300 এ পরিবর্তন করুন , এটি ত্রুটিটি সমাধান করার জন্য আমি একটাই করেছি। রেজিস্ট্রি এক আমি বিশ্বাস করি আপনি ইতিমধ্যে সম্পন্ন হতে পারে। এমটিইউ পরিবর্তনের জন্য আদেশ

ip link set dev eth0 mtu 1300

আপনি যদি ইন্টারনেটের গতি সত্যিই ভাল থাকেন তবে এই ত্রুটিটি এড়াতে এমটিইউ আকারটি জরুরী


এটি একটি ভাল টিপ, তবে শংসাপত্র না থাকার ফলে একটি 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: // মাইপ্রক্সি ) এ পরিবর্তন করেছি এবং এখন সবকিছু ঠিকঠাক কাজ করে।


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 দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.