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