docker pull代理配置(Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: reque)

瞭望清晨 2024-09-16 09:07:06 阅读 79

1.背景

问题描述

安装外部公共仓的开源镜像时,比如<code>sudo docker pull mysql,出现如下报错提示:

$ sudo docker pull mysql

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)

报错原因

大概率是因为docker的proxy代理没有配置或没有配置正确。有些公司,是需要通过配置proxy才能访问外网,且docker不能直接依赖基础操作系统环境的proxy,因此需要独立配置属于docker的proxy才能访问外网。

2.docker proxy配置

2.1.配置daemon.json文件

(1)打开daemon.json文件

如果没有该文件,可直接创建。参考命令如下:

sudo mkdir -p /etc/docker

sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak

sudo vim /etc/docker/daemon.json

(2)修改daemon.json文件

将如下内容粘贴到daemon.json文件中。

{

"registry-mirrors": [

"https://dockerhub.azk8s.cn",

"https://docker.mirrors.ustc.edu.cn",

"http://hub-mirror.c.163.com",

"https://k8s.gcr.io",

"https://github-releases.githubusercontent.com",

"https://ustc-edu-cn.mirror.aliyuncs.com"

],

"insecure-registries": [

"registry.me:5000",

"http://docker.mirrors.ustc.edu.cn",

"https://k8s.gcr.io",

"https://github-releases.githubusercontent.com",

"https://registry-1.docker.io",

"decs.com"

],

"exec-opts": [

"native.cgroupdriver=systemd"

]

}

2.2.配置docker代理文件

(1)打开http-proxy.conf文件

如果该文件不在,可自行创建,命令如下:

sudo mkdir -p /etc/systemd/system/docker.service.d

sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

(2)修改http-proxy.conf文件

在http-proxy.conf文件配置proxy信息,如下:

[Service]

Environment="HTTP_PROXY=http://账号:密码@proxy.xxx.com:8080/"code>

Environment="HTTPS_PROXY=http://账号:密码@proxy.xxx.com:8080/"code>

Environment="NO_PROXY=decs.com,localhost,127.0.0.1"code>

注意,重要事情说3遍:

密码不要转义,哪怕有@之类的特殊符号,都是直接填写裸密码!

密码不要转义,哪怕有@之类的特殊符号,都是直接填写裸密码!

密码不要转义,哪怕有@之类的特殊符号,都是直接填写裸密码!

3.重启docker,查看proxy是否配成功

(1)重启docker

sudo systemctl daemon-reload

sudo systemctl restart docker

(2)查看proxy是否配置成功

sudo systemctl show --property=Environment docker

如果proxy配置成功,则显示如下结果

Environment=HTTP_PROXY=http://账号:密码@proxy.xxx.com:8080/ HTTPS_PROXY=http://账号:密码@proxy.xxx.com:8080/ NO_PROXY=decs.com,localhost,127.0.0.1如果proxy配置失败,则显示如下结果

Environment=

如果出现该情况,应该是proxy的格式不正确,比如用了转义字符等原因。

4.测试拉取镜像

拉取ubuntu镜像

不出意外的话,应该很快速的得到如下结果:

$ sudo docker pull ubuntu

Using default tag: latest

latest: Pulling from library/ubuntu

31e907dcc94a: Pull complete

Digest: sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee

Status: Downloaded newer image for ubuntu:latest

docker.io/library/ubuntu:latest

查看拉取镜像

$ sudo docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

ubuntu latest edbfe74c41f8 4 weeks ago 78.1MB



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。