Eu entendo isso consistentemente (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
No entanto, o TLS curl funciona bem (além do erro de autenticação):
$ curl https://registry-1.docker.io/v2/
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}
E mesmo um pequeno programa golang (para imitar o docker) funciona bem:
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))
}
O pcap para a solicitação de tempo limite TLS do docker:
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
O que poderia estar dando errado?
linux-networking
docker
Willem
fonte
fonte
Respostas:
net/http: TLS handshake timeout
significa que você tem uma conexão lenta à Internet. O valor padrão do tempo limite da conexão é muito pequeno para o seu ambiente. Infelizmente, o docker não possui configurações que permitam alterar o tempo limite da conexão. Você pode tentar criar seu próprio cache de registro em outro lugar e extrair imagens dele.fonte
speedtest.net
efast.com
mostrar que a velocidade da minha internet é de 90 Mbit / s. Isso é lento? Estou puxandopython:2.7-slim
imagem. Eu sou capaz de puxarhello-world
do hub, mas não o python. Isso me dá o mesmoTLS handshake timeout
erro.No meu caso, meu servidor estava atrás do nat e do proxy e configurado para detectar automaticamente o que eu fiz no terminal atual, tenho configurações de proxy de exportação
fonte
Eu tive um problema igual, usando a
docker run hello-world
1ª vez, o que resulta no download de uma imagem usandohttps://registry-1.docker.io/v2/
, que termina emPesquisando na web por horas e descobrimos que isso acontece em alguns usuários com o ubuntu 18.04 e a versão atual do docker, atrás de um proxy. Uma solução alternativa é remover toda a configuração do proxy https para deixar apenas a configuração do proxy http e forçar um download http (não https).
Não sei qual é o verdadeiro motivo.
(a propósito: eu tive um problema igual de "TLS handshake" com o compositor e o packagist. Isso ocorreu devido a um arquivo cacert.pem ausente, que não era fornecido pelo ubuntu por padrão. Talvez esse problema do docker esteja indo na mesma direção ?)
fonte
Se você estiver usando um registro particular, precisará colocar o certificado para isso em /etc/docker/certs.d/ registryname /ca.crt
registryname mudará de acordo
Além disso, altere o tamanho da MTU para 1300, isso também foi uma coisa que fiz para resolver o erro. Primeiro registro, acredito que você já tenha feito. Comando para alteração de MTU
ip link set dev eth0 mtu 1300
É importante verificar o tamanho da MTU para evitar esse erro se a velocidade da Internet é realmente boa
fonte
x509: certificate signed by unknown authority
erro, nãoTLS handshake timeout
.Eu experimentei o mesmo problema. Então a resposta de Azamat Hackimov me apontou na direção certa. Minha máquina está um pouco lenta, especialmente no momento da inicialização, quando desejo iniciar o serviço. Portanto, o curto tempo limite entra em ação e mata minha solicitação.
Esta é minha solução alternativa:
Simplesmente martele o servidor com solicitação. Normalmente, o segundo é bem sucedido para mim.
fonte
O que funcionou para mim foi usar uma interface de rede diferente. Em vez de conectar através de Ethernet (com fio), mudei para wifi. Problema resolvido.
A propósito, eu estava em uma nova instalação do Raspbian Stretch.
fonte
Nenhuma das respostas acima pode resolver meu problema, no entanto, descobri que abaixo https://github.com/helm/helm/issues/5220 funciona para mim!
fonte
Você pode obter o
TLS handshake timeout
erro se o proxy do daemon do docker não estiver configurado corretamente.Para obter mais detalhes, consulte https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
fonte