docker无法拉取(pull)镜像Error response from daemon

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

该博客的方法适用解决下列 bugs:

1
2
3
4
5
# Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting heade rs).
 
# Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp [2600:1f18:2148:bc01:20a3:9c3e:d4a7:9fb]:443: i/o timeout
 
# Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: TLS handshake timeout<br># 参考博客:https://blog.csdn.net/qq_51762470/article/details/138588514,https://cloud.tencent.com/developer/article/1644463,

  

场景:

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

# 简单的临时代理。 值得注意的是,要设置好代理服务器,让局域网的设备,可以通过这个代理端口上网,建议找一下教程
export http_proxy=http://你的代理服务器ip:端口
export https_proxy=http://你的代理服务器ip:端口

解决步骤:

step1: 首先排除配置国内镜像源的原因,建议先配置镜像源。 

复制代码
vim /etc/docker/daemon.json #自己编辑添加镜像源
# 或者直接使用命令添加镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"experimental": false,
"debug": true,
"registry-mirrors": ["https://6kx4zyno.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
复制代码

如果配置了镜像源还无法拉取镜像,就继续看step2。

step2:  配置docker配置文件。

如果服务器是通过代理的方式进行上网,则需要格外的配置docker代理-即修改docker的配置文件。
docker拉取镜像的时候,不走系统配置的代理环境,所以需要单独配置它的代理文件。

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

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

若显示Environment为空,则进行配置。

复制代码

# 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"

 

#因为我里用clash 开的代理,htpps是默认的7890,http是7890,所以我的配置如下:

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"

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

# 3. 加载配置重启docker

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

复制代码

 

posted @   蟹蟹蟹蟹  阅读(13317)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示