CentOS7下 讓Docker pull命令使用squid做http代理拉取目標映象倉庫的映象

劍握在手發表於2019-01-07

場景,如下圖所示:

伺服器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

(完畢)

 

相關文章