docker无法拉取(pull)镜像 | 校园网 | 内网 | 代理 | Error response from daemon: Get https://registry-1.docker.io/v2
该博客的方法适用解决下列 bugs:
# 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
# 参考博客: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 #查看有没有配置成功
标签:pull,daemon,http,配置,拉取,https,镜像,docker From: https://www.cnblogs.com/JaneLin0409/p/18379753