docker: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connectio

本文介绍了解决Docker在拉取CentOS镜像时遇到的TLS握手超时错误的方法,包括安装并使用dig工具查找正确IP、修改hosts文件、添加DNS服务器以及更改镜像源。

使用docker pull从镜像仓库拉取镜像时报错如下:

[root@docker-registry ~]# docker pull centos

Using default tag: latest
Trying to pull repository docker.io/library/centos ... 
Get https://registry-1.docker.io/v2/library/centos/manifests/latest: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fcentos%3Apull&service=registry.docker.io: net/http: TLS handshake timeout

解决办法:

[root@docker-registry ~]# yum install bind-utils                          // 安装dig工具
[root@docker-registry ~]# dig @114.114.114.114 registry-1.docker.io
; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> @114.114.114.114 registry-1.docker.io
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51198
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;registry-1.docker.io.          IN      A

;; ANSWER SECTION:
registry-1.docker.io.   31      IN      A       34.206.236.31
registry-1.docker.io.   31      IN      A       54.175.43.85
registry-1.docker.io.   31      IN      A       34.205.207.96
registry-1.docker.io.   31      IN      A       34.233.151.211
registry-1.docker.io.   31      IN      A       52.70.175.131
registry-1.docker.io.   31      IN      A       34.200.28.105
registry-1.docker.io.   31      IN      A       54.165.149.19
registry-1.docker.io.   31      IN      A       34.201.236.93

;; Query time: 10 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Wed Oct 31 11:18:55 CST 2018
;; MSG SIZE  rcvd: 177

选择上面命令执行结果中的一组解析放到本机的/etc/hosts文件里做映射

[root@docker-registry ~]# vim /etc/hosts

54.175.43.85    registry-1.docker.io

接着再进行docker pull镜像下载操作

[root@docker-registry ~]# docker pull centos
Using default tag: latest
Trying to pull repository docker.io/library/centos ... 
latest: Pulling from docker.io/library/centos
aeb7866da422: Pull complete 
Digest: sha256:67dad89757a55bfdfabec8abd0e22f8c7c12a1856514726470228063ed86593b
Status: Downloaded newer image for docker.io/centos:latest
[root@docker-registry ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos     latest              75835a67d134        3 weeks ago         200 MB

方法二:添加dns 8.8.8.8

a 将nameserver 8.8.8.8写入/etc/resolvconf/resolv.conf.d/head文件中

sudo vi /etc/resolvconf/resolv.conf.d/head

b 更新dns

sudo resolvconf -u

方法三:修改镜像源

sudo vi /etc/docker/daemon.json

写入以下内容:

{
    "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

重新加载docker的配置文件
sudo systemctl daemon-reload
重启docker
sudo systemctl restart docker
当使用 Docker 下载 MySQL 时出现 `Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)` 错误,可尝试以下解决方案: #### 配置代理 可配置代理来解决网络连接问题。首先创建并编辑代理配置文件: ```bash sudo mkdir -p /etc/systemd/system/docker.service.d sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf ``` 在打开的文件中添加以下内容(假设代理地址为 `http://proxy.example.com:8080`,需根据实际情况修改): ```plaintext [Service] Environment="HTTP_PROXY=http://proxy.example.com:8080/" Environment="HTTPS_PROXY=http://proxy.example.com:8080/" ``` 保存文件后,重新加载 systemd 配置并重启 Docker: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` 之后再尝试拉取 MySQL 镜像 [^4]。 #### 重启 Docker 服务 有时候简单地重启 Docker 服务就能解决问题。使用以下命令重启 Docker: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` 然后再次尝试拉取 MySQL 镜像,如: ```bash sudo docker pull mysql:5.7 ``` [^5] #### 配置国内镜像源 使用国内的 Docker 镜像源可以加快下载速度并避免网络问题。以阿里云镜像为例,编辑 `/etc/docker/daemon.json` 文件(如果文件不存在则创建),添加以下内容: ```json { "registry-mirrors": ["https://<your-aliyun-mirror>.mirror.aliyuncs.com"] } ``` 将 `<your-aliyun-mirror>` 替换为你自己的阿里云镜像地址。保存文件后,重新加载 systemd 配置并重启 Docker: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` 接着尝试拉取 MySQL 镜像 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值