docker无法拉取(pull)镜像 | 校园网 | 内网 | 代理 | Error response from daemon: Get https://registry-1.docker.io/v2

常见错误排除:

首先要排除配置国内镜像源的原因,建议先配置镜像源,如果配置了镜像源还无法拉取镜像,就可以继续看
配置镜像源方法:阿里云配置加速网站:容器镜像服务 (aliyun.com)

vim /etc/docker/daemon.json #自己编辑添加镜像源
# 或者直接使用命令添加镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://yourID.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

需求场景:

学生党一枚,校园网只能登录认证登录,学校服务器在内网里,让服务器上网:
1、登录校园网认证
2、走主机的代理。(自己的主机登录校园网认证,再让服务器走自己主机的代理)

# 简单的临时代理
export http_proxy=http://你的代理服务器ip:端口
export https_proxy=http://你的代理服务器ip:端口

值得注意的是,要设置好代理服务器,让局域网的设备,可以通过这个代理端口上网,建议找一下教程
如果有clash 和 v2rayN 那就可以很好很快的设置。


问题描述

使用校园网认证登录,也还是可以正常拉取镜像,但是使用代理的方式上网就不可以。

配置好代理之后,发现使用docker不能拉取镜像(可以使用yum安装软件,否则代理应该没有配置成功),报错:
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代理-即修改docker的配置文件。
docker拉取镜像的时候,不走系统配置的代理环境,所以需要单独配置它的代理文件。

已经配置过docker配置文件–执行过下面的操作还不能上网,但是第一次配置的时候是可以上网的

很可能是ip地址变了,注意检查代理服务器的ip地址和服务器配置的ip地址是否一致。


解决方案:

参考:如何配置docker通过代理服务器拉取镜像 - 醉马踏千秋 - 博客园 (cnblogs.com)

检查docker代理配置的俩个命令:

systemctl show --property=Environment docker #查看代理配置
# 或者
docker info #查看配置选项

1、步骤创建或者覆盖掉原来的docker默认配置

sudo mkdir -p /etc/systemd/system/docker.service.d  #创建
vim /etc/systemd/system/docker.service.d/http-proxy.conf #创建或者修改这个文件

2、配置自己的代理环境

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"
#自己建了私有的镜像仓库,需要 dockerd 绕过代理服务器直连,那么配置 NO_PROXY 变量:
Environment="NO_PROXY=your-registry.com,10.10.10.10,*.example.com" 

因为我里用v2ray开的代理,socks是默认的10808,http是10809,所以我的配置如下:

[Service]
Environment="HTTP_PROXY=http://我的ip:10809"
Environment="HTTPS_PROXY=socks5://我的ip:10808"

需要注意一点,https的代理端口不一定要和http一样,除非你确保https也走那个端口,不然走http端口协议有时候是不能处理https数据的,这也是导致配置完不能拉取镜像的原因之一

3、加载配置重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker
docker info #查看有没有配置成功

题外话:更加具体的场景以及疑问

在校园网需要认证的情况下,只有以下俩种情况可以拉取镜像。
1、不修改docker代理配置文件,即docker不能配置代理,然后使用校园网登陆是可以直接拉取镜像的。
2、想让docker走代理上网,那就要配置docker的配置文件。因此要保证代理服务器配置正确,开放了端口并能上网。可以让配置相应的系统环境代理,看看是不是能通过那个代理上网。

疑问

1、登录校园网的情况下是可以ping通baidu.com,但是在走代理的情况下是ping不通,但是确实是可以上网的,可以通过wget、curl、yum安装软件等方法验证。才疏学浅,也不知道为什么和原因,可能是因为是校园网,所以运营商配置了什么的原因?希望有高人解答。
2、我曾搭建过socks代理让服务器通过主机上网,结果是可以通过wget获取网页信息,但是也不能ping通以及使用yum 安装软件。

### Docker Desktop 镜像失败解决方案 当遇到 `Error response from daemon: Get "https://registry-1.docker.io/v2/"` 错误时,通常是因为网络连接问题或者Docker配置不当引起的。以下是详细的解决办法: #### 修改DNS设置 修改系统的DNS设置可以有效改善网络请求超时的情况。编辑 `/etc/resolv.conf` 文件来指定可靠的DNS服务器地址[^3]。 ```bash sudo vim /etc/resolv.conf ``` 在文件中添加如下内容: ```plaintext nameserver 8.8.8.8 nameserver 8.8.4.4 ``` 保存并退出编辑器后重启Docker服务使更改生效。 #### 调整Docker Daemon配置 对于Docker Desktop用户来说,在某些情况下还需要调整daemon.json中的代理设置以确保能够正常访问远程仓库。打开或创建位于 `$HOME/.docker/daemon.json` 的JSON配置文件,并加入以下参数[^1]: ```json { "dns": ["8.8.8.8", "8.8.4.4"], "max-concurrent-downloads": 10, "debug": true } ``` 完成上述操作之后再次启动Docker Desktop应用即可解决问题。 #### 使用国内镜像源加速下载速度 如果仍然存在无法到官方库资源的问题,则建议切换至阿里云或其他服务商提供的中国区镜像站点作为默认索引位置。这可以通过同样的方式修改daemon.json实现: ```json { ... "registry-mirrors": [ "https://<your_mirror>.mirror.aliyuncs.com" ] } ``` 请替换 `<your_mirror>` 为实际可用的服务端口前缀字符串。 通过以上措施应该能较好地处理因网络延迟而导致的失败现象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值