docker pull链接不到外网Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request

背景

因为一些安全原因,公司的机器网络环境不能直接访问外网,需要配置代理才能够访问,导致我使用拉取镜像的时候连接不到,报了如下的错误:
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while

一般来说主机通过代理访问外网方式就是通过在命令行设置 export 来设置代理,如下所示:
export http_proxy=http://:8080
export https_proxy=http://
:8080
但是docker拉取镜像是通过 docker daemon 服务完成,docker daemon 服务是在另一个进程中,不会读取当前shell 命令行的代理,所以 docker pull 会失败,官网的说明如下:
在这里插入图片描述
网上试了把dns改为8.8.8.8或其他也没有用,于是就得配置 docker daemon的代理,首先有个前提就是,真的存在内网通往公网的代理服务器。

代理配置

1、创建目录

mkdir /etc/systemd/system/docker.service.d

2、编辑配置文件 /etc/systemd/system/docker.service.d/http-proxy.conf ,添加内容如下:

[Service]
Environment="HTTP_PROXY=http://username:password@192.168.1.0:8080/"
Environment="HTTPS_PROXY=https://username:password@192.168.1.0:8080/"
Environment="NO_PROXY= hostname.example.com,172.16.0.12"

官网其实写得很清楚:https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
但是我发现我这边的代理机器没有对外提供https的访问,也就是不支持http,所以我在https_proxy协议还是写了http的

[Service]
Environment="HTTP_PROXY=http://username:password@192.168.1.0:8080/"
Environment="HTTPS_PROXY=http://username:password@192.168.1.0:8080/"
Environment="NO_PROXY= hostname.example.com,172.16.0.12"

3、重新加载systemd守护程序

systemctl daemon-reload

4、重启docker

 systemctl restart docker

5、验证配置是否已加载:

systemctl show docker --property Environment
Environment=HTTP_PROXY=http://username:password@192.168.1.0:8080/ HTTPS_PROXY=http://username:password@192.168.1.0:8080/ NO_PROXY= hostname.example.com,172.16.0.12

配置完后使用docker pull,发现有反应了

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值