場景,如下圖所示:
服務器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
(完畢)
