CentOS7下 让Docker pull命令使用squid做http代理拉取目标镜像仓库的镜像

场景,如下图所示:

服务器B具有两个网卡,分别和服务器A和服务器C互通,这里想要在服务器C上借助服务器B作为桥梁,拉取镜像仓库服务器A上的镜像。

思路也很简单,在服务器上搭建HTTP代理服务,服务器C配置代理,通过代理拉取镜像。

注意,下文出现的IP和上图一一对应。

具体操作如下:

服务器A:

已经搭建好镜像仓库不再赘述。

服务器B:

1、安装squid,squid可以用来代理请求,安装命令:

yum install -y squid

2、编辑squid的配置文件,命令:

cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

vi /etc/squid/squid.conf

内容全部干掉,改为以下内容:

http_port 3128
http_access allow all

第一个就是指定代理服务的端口,第二个就是允许所有请求,具体配置项介绍参考 传送门

如果要使用https请把端口改为443,并配置证书信息,写法如下:

https_port 443 cert=/zs/Nginx/xxx.crt key=/zs/Nginx/xxx.key

3、启动,命令如下:

systemctl start squid

如果有防火墙记得关闭防火墙或者打开3128端口

服务器C

1、给Docker添加http代理,注意,不是给操作系统添加http代理,两者的操作方式是不一样的。添加方式如下:

命令:

mkdir -p /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/http-proxy.conf

填写内容如下:

[Service]
Environment=HTTP_PROXY=2.2.2.1:3128

如此服务器B的代理地址就被填写进了配置文件。

2、让配置文件内容生效,命令如下

systemctl daemon-reload
systemctl restart docker

3、尝试拉取服务器A上的镜像仓库里的镜像:

假如服务器A上的镜像仓库跑在5000端口上,且有个镜像:1.1.1.1:5000/hello-world:latest

那么此时直接在服务器上执行以下命令,就能拉取到该镜像:

docker pull 1.1.1.1:5000/hello-world

参考地址:

http://www.squid-cache.org/Doc/config/

https://docs.docker.com/config/daemon/systemd/#httphttps-proxy

(完毕)

原文地址:https://www.cnblogs.com/flying607/p/10235103.html