Docker連接超時的5種快速解決方法總結
報錯:
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)
錯誤原因分析:
這個錯誤說明你的 Docker 無法連接到 Docker Hub(registry-1.docker.io),通常是因為:
- 網(wǎng)絡不通或網(wǎng)絡延遲高(例如服務器在國外,國內訪問慢或被墻);
- DNS 解析失敗或不穩(wěn)定;
- Docker 守護進程(daemon)配置問題;
- 使用了代理但配置錯誤;
- 服務器防火墻或安全組限制了連接。
解決方案
方案一:配置國內鏡像加速器(推薦)
由于 Docker Hub 國外服務器訪問較慢或不可達,建議配置 Docker 的國內鏡像加速器。
1. 編輯 Docker 配置文件:
sudo vim /etc/docker/daemon.json
2. 添加或修改以下內容(使用阿里云、DaoCloud、騰訊云等鏡像加速):
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}
?? 注意:部分鏡像源可能不穩(wěn)定,你可以根據(jù)實際測試情況選擇。
3. 重啟 Docker 服務:
sudo systemctl daemon-reload sudo systemctl restart docker
4. 測試是否成功:
docker pull nginx
方案二:檢查服務器網(wǎng)絡和 DNS
1. 檢查是否能訪問 Docker Hub:
ping registry-1.docker.io
如果無法 ping 通,嘗試使用 IP:
nslookup registry-1.docker.io
2. 更改 DNS(如使用1.1.1.1或8.8.8.8):
編輯:
sudo vim /etc/resolv.conf
添加:
nameserver 8.8.8.8 nameserver 1.1.1.1
方案三:使用代理(如果你在使用代理)
如果你在使用代理,請確保配置正確:
export HTTP_PROXY="http://proxy.example.com:port" export HTTPS_PROXY="http://proxy.example.com:port"
或者在 Docker 配置中添加代理:
{
"proxies": {
"default": {
"httpProxy": "http://proxy.example.com:port",
"httpsProxy": "http://proxy.example.com:port",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
然后重啟 Docker:
sudo systemctl restart docker
方案四:檢查防火墻 / 安全組
如果你在云服務器(如阿里云、騰訊云、AWS)上運行 Docker,請確保:
- 出站規(guī)則(Outbound) 允許訪問
registry-1.docker.io(端口 443); - 防火墻未阻止 Docker 的訪問(如
ufw、iptables、firewalld);
方案五:使用curl測試網(wǎng)絡連接
curl -v https://registry-1.docker.io/v2/
如果返回超時,說明網(wǎng)絡問題仍未解決。
常用排查命令
| 命令 | 作用 |
|---|---|
systemctl status docker | 查看 Docker 是否正常運行 |
docker info | 查看 Docker 信息,包括 registry-mirrors 是否生效 |
docker version | 查看 Docker 版本 |
nslookup registry-1.docker.io | 檢查 DNS 解析 |
curl -v https://registry-1.docker.io/v2/ | 測試是否能訪問 Docker Hub |
總結
| 問題 | 解決方法 |
|---|---|
| 無法訪問 Docker Hub | 配置國內鏡像加速器(推薦) |
| DNS 解析失敗 | 更換 DNS(如 8.8.8.8) |
| 使用代理 | 正確設置 HTTP_PROXY |
| 防火墻限制 | 檢查安全組和出站規(guī)則 |
| 網(wǎng)絡不通 | 使用 curl 或 ping 測試連接 |
如果你能提供以下信息,我可以給出更具體的建議:
- 你的操作系統(tǒng)(如 CentOS 7、Ubuntu 20.04);
- 是否在使用代理;
- 所在服務器位置(本地、阿里云、海外等);
docker info的輸出內容。
備注:
我這里用的【方案一】解決了。
到此這篇關于Docker連接超時的5種快速解決方法總結的文章就介紹到這了,更多相關Docker連接超時解決內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用docker搭建一套開發(fā)環(huán)境全家桶的詳細教程
這篇文章主要介紹了使用docker搭建一套開發(fā)環(huán)境全家桶,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
Docker for windows pull鏡像文件的安裝位置改變的方法
這篇文章主要介紹了Docker for windows pull鏡像文件的安裝位置改變的方法的相關資料,需要的朋友可以參考下2016-12-12
在宿主機上執(zhí)行docker容器內部的shell或程序方式
這篇文章主要介紹了在宿主機上執(zhí)行docker容器內部的shell或程序方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
Linux/Docker 中使用 System.Drawing.Common 踩坑記錄分享
這篇文章主要介紹了Linux/Docker 中使用 System.Drawing.Common 踩坑記錄,本文通過兩種方案給大家詳細介紹,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
Docker與iptables及實現(xiàn)bridge方式網(wǎng)絡隔離與通信操作
這篇文章主要介紹了Docker與iptables及實現(xiàn)bridge方式網(wǎng)絡隔離與通信操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

