常见错误排除:
首先要排除配置国内镜像源的原因,建议先配置镜像源,如果配置了镜像源还无法拉取镜像,就可以继续看
配置镜像源方法:阿里云配置加速网站:容器镜像服务 (aliyun.com)
vim /etc/docker/daemon.json #自己编辑添加镜像源# 或者直接使用命令添加镜像源sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://yourID.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo 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-reloadsudo systemctl restart dockerdocker info #查看有没有配置成功
题外话:更加具体的场景以及疑问
在校园网需要认证的情况下,只有以下俩种情况可以拉取镜像。
1、不修改docker代理配置文件,即docker不能配置代理,然后使用校园网登陆是可以直接拉取镜像的。
2、想让docker走代理上网,那就要配置docker的配置文件。因此要保证代理服务器配置正确,开放了端口并能上网。可以让配置相应的系统环境代理,看看是不是能通过那个代理上网。
疑问
1、登录校园网的情况下是可以ping通baidu.com,但是在走代理的情况下是ping不通,但是确实是可以上网的,可以通过wget、curl、yum安装软件等方法验证。才疏学浅,也不知道为什么和原因,可能是因为是校园网,所以运营商配置了什么的原因?希望有高人解答。
2、我曾搭建过socks代理让服务器通过主机上网,结果是可以通过wget获取网页信息,但是也不能ping通以及使用yum 安装软件。