起因
我在使用Docker的pull
命令拉取ELK官方提供的鏡像時,會出現(xiàn)無法連接的情況,并且會出現(xiàn)TLS handshake timeout
的錯誤。在搜索相關文章之后得出結論:國內(nèi)的網(wǎng)絡環(huán)境不好,導致連接docker.elastic.co
失敗或無法連接。于是我第一時間想到了代理的方式,好在Docker支持設置代理來訪問其他Registry,下面記錄整個配置過程。
準備工作
首先,你的機器上需要安裝好Docker,當我寫這篇文章時,Docker的版本為18.03,對于后續(xù)版本,本文章的配置方法可能會失效。
此外,還需要準備一個代理服務器,可以正常訪問境外網(wǎng)站(如:Google,YouTuBe等)。我用的是VPS搭建的Shadowsocks代理,本機Shadowsocks客戶端開啟之后可以直接通過http://127.0.0.1:1080/訪問境外網(wǎng)站。
假設你的環(huán)境也是Ubuntu(其他環(huán)境應該也是類似的)。
開始配置
1、創(chuàng)建如下路徑的目錄
sudo mkdir -p /etc/systemd/system/docker.service.d
2、進入到上一步創(chuàng)建的目錄下,并在該目錄下創(chuàng)建一個名為http-proxy.conf的文件(如:/etc/systemd/system/docker.service.d/http-proxy.conf),使用vim編輯文件內(nèi)容如下
[Service]
Environment="HTTPS_PROXY=http://127.0.0.1:1080/" "NO_PROXY=localhost,127.0.0.1,registry.docker-cn.com,hub-mirror.c.163.com"
3、刷新配置
sudo systemctl daemon-reload
4、重啟Docker服務
sudo systemctl restart docker
5、查看配置
systemctl show --property=Environment docker
出現(xiàn)如下信息表示配置成功:
Environment=HTTPS_PROXY=http://127.0.0.1:1080/ NO_PROXY=localhost,127.0.0.1,registry.docker-cn.com,hub-mirror.c.163.com
6、驗證配置是否生效
重新從docker.elastic.co上拉取elasticsearch鏡像,此時已經(jīng)可以正常連接了,只是速度較慢。
liuwei@liuwei-Ubuntu:~$ sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.2.4
6.2.4: Pulling from elasticsearch/elasticsearch
469cfcc7a4b3: Downloading [==========================> ] 38.87MB/73.17MB
8e27facfa9e0: Downloading [===================================> ] 40.05MB/56.33MB
cdd15392adc7: Download complete
ddcc70fbd933: Downloading [====================> ] 44.31MB/108.9MB
3d3fa0383994: Waiting
15d1376ebd55: Waiting
這種方法適用于從一些第三方提供的Registry上拉取鏡像時,由于網(wǎng)絡原因無法連接。如果從Docker官方的鏡像倉庫中拉取鏡像時,一種比較好的辦法就是配置registry-mirrors實現(xiàn)加速,具體方法請自行搜索。
上述步驟是來自Docker官方文檔中的部分,原文地址為Control Docker with systemd。
如果你在配置過程遇到問題,歡迎在留言討論。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。