配置Docker的HTTP代理

本文是 CHAOS整理而得,在此贴图,记录一下docker代理上网的问题,CHAOS的个人博客:http://www.kalistudy.com/

场景:
在公司想要上外网,必须走http代理,所以docker安装完成后,想要去访问外网,下载image,就必须设置代理。
比如搜索image
docker search webgoat-8.0
如果外网不同,会报错

解决代理的方法,参考官网教程
https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
简单总结一下步骤
1、创建文件夹
sudo mkdir -p /etc/systemd/system/docker.service.d
2、创建配置文件
cd /etc/systemd/system/docker.service.d
touch http-proxy.conf
3、在http-proxy.conf中添加http代理
[Service] Environment= "HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1"
4、更新,使配置文件生效
sudo systemctl daemon-reload
5、重启docker服务
sudo systemctl restart docker
6、检查配置是否生效
$ systemctl show --property =Environment docker
如果生效,会显示代理信息 Environment = HTTP_PROXY = http://proxy.example.com:80/

这时候,执行docker search hello-world,得到回显如下

这是因为docker服务启动时,创建了docker0这个虚拟网卡,默认使用在这个网卡去连接公司代理服务器,这个网卡是无法连接到公司的代理服务器的。
ifconfig回显如下:
配置Docker的HTTP代理_第1张图片
通过telnet 公司代理服务器IP 端口,来验证是否能联通,如果不能联通,就是确定是docker虚拟网卡的问题了。
解决方法是,down掉docker0
ifconfig docker0 down
配置Docker的HTTP代理_第2张图片
此时再次执行telnet命令,确定能连通公司的代理服务器
执行docker search hello-world,得到正确回显

分享完毕。
Just For Fun!!

你可能感兴趣的:(技术相关)