[deepin exploration] 运行nginx出现错误,如何解决
Tofloor
poster avatar
WHOAMI 91413
deepin
2025-12-08 00:38
Author

Using default tag: latest
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)

sudo docker run nginx出现如上错误,是什么原因,如何解决,求指教

Reply Favorite View the author
All Replies
LiuYongzhang
deepin
2025-12-08 08:00
#1

这个错误 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) 通常是由于以下原因导致的:

  1. 网络连接问题:Docker Hub 是国外服务器,国内访问可能受限或不稳定
  2. DNS 解析问题:无法正确解析 Docker Hub 的域名
  3. 防火墙或代理拦截:公司网络或防火墙阻止了连接
  4. 配置错误:Docker 的配置文件存在问题

1. 检查基本网络连接

首先测试网络是否能正常访问 Docker Hub:

bash

运行

# 测试网络连接
ping registry-1.docker.io
curl -v https://registry-1.docker.io/v2/ --connect-timeout 5

2. 配置国内镜像加速器(推荐解决方案)

这是解决国内访问 Docker Hub 慢或超时的最有效方法:

bash

运行

# 备份原配置文件(如果存在)
sudo cp /etc/docker/daemon.json{,.bak} 2>/dev/null || true

# 创建或修改配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.1panel.live/",
    "https://e2zfh98i.mirror.aliyuncs.com",
    "https://mirror.baidubce.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker-cf.registry.cyou"
  ]
}
EOF

# 重新加载配置并重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

3. 检查和修复 DNS 配置

如果是 DNS 解析问题,可以尝试修改 DNS 设置:

bash

运行

# 临时修改DNS(重启后失效)
sudo tee /etc/resolv.conf <<-'EOF'
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 114.114.114.114
EOF

# 重启网络服务
sudo systemctl restart systemd-resolved

4. 配置代理(如果需要)

如果您在公司内网需要使用代理:

bash

运行

# 创建代理配置目录
sudo mkdir -p /etc/systemd/system/docker.service.d

# 创建代理配置文件
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<-'EOF'
[Service]
Environment="HTTP_PROXY=http://your-proxy-server:port"
Environment="HTTPS_PROXY=http://your-proxy-server:port"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF

# 重新加载配置并重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

5. 测试解决方案

配置完成后测试是否解决:

bash

运行

# 测试拉取镜像
docker pull nginx

# 查看Docker信息确认配置生效
docker info | grep -i "Registry Mirrors" -A 10

高级排查

如果以上方法都不奏效,可以尝试:

bash

运行

# 查看Docker日志获取详细错误信息
sudo journalctl -u docker.service

# 检查防火墙设置
sudo ufw status

# 更新Docker到最新版本
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

总结

这个问题的核心是 Docker 无法连接到 Docker Hub 服务器。最常见的解决方案是配置国内镜像加速器,这样可以绕过直接访问国外服务器的限制,显著提高拉取镜像的速度和稳定性。

建议您先尝试配置镜像加速器,如果问题仍然存在,再根据具体情况检查网络连接、DNS 设置或代理配置。

Reply View the author
一粒
deepin
2025-12-08 09:49
#2

这是用docker部署nginx的时候报的错,和nginx没关系,建议多看一点近几年的docker教程,都会提到网络这部分的

Reply View the author
要成
deepin
2025-12-08 13:54
#3

docker部署nginx会不会太复杂,又是docker内部网络,又是物理机网络,路由设置,防火墙设置,如果docker没有建立固定ip的网络,用默认设置的话中间你关闭了某个容器,docker重启可能容器ip自动分配时就变了,又跟nginx配置不匹配了。Nginx干脆直接部署在物理机上,docker容器也重新附加固定ip的docker网络,这样子nginx的配置相对固定了,docker关闭容器重启docker也有固定ip了。

你这个是墙了,拉不到吧?!没加代理吗?

Reply View the author