閑扯幾句
不知不覺已經2月中了,1個半月忙得沒寫博客,這篇其實很早就想寫了(可追溯到Docker剛剛無法拉鏡像的時候),由于工作和生活上的事比較多又在備考軟考架構,拖了好久……
簡單記錄下怎么做的,以防同事和朋友問我怎么拉鏡像倉庫的,直接祭出本文😆
適用于將Docker以Systemd服務安裝的Linux環境。其他環境僅供參考。
怎么做
第1步 自備代理工具,以我本地掛的梯子 192.168.56.1:7899 舉例,請自行變通。
第2步 修改docker.service
vim /lib/systemd/system/docker.service
將代理環境變量寫入該服務文件,寫的位置在[Service]
塊下
# proxy
Environment="HTTP_PROXY=http://192.168.56.1:7899"
Environment="HTTPS_PROXY=http://192.168.56.1:7899"
Environment="NO_PROXY=localhost,127.0.0.1,10.*,172.*"
其中NO_PROXY
可追加需要免代理的倉庫地址。以下是截圖:
第3步 重加載docker Unit文件并重啟Docker
systemctl daemon-reload
systemctl restart docker
第4步 驗證
docker login
docker pull hellxz/alpine-tomcat:openjdk8-tomcat-8.5.78
原理
Systemd的每個Unit(服務)都是在啟動時加載的,不會加載到當前會話中的臨時設置的環境變量,Unit文件主要存在于以下三個目錄中,加載的優先級就是我這邊的排序:
- /lib/systemd/system
- /run/systemd/system
- /etc/systemd/system
按文中修改docker.service這個Unit文件時也一樣,用的是最高優先級的。systemd重新加載Unit文件后會讀取到配置在Unit文件中的環境變量,這樣就會生效了。
至于代理怎么弄,這個就不多說了,得需要點魔法。
再扯幾句
近期可能會寫一點軟考相關內容,有興趣的可以關注下。
本文同步發布在博客園 https://www.cnblogs.com/hellxz 與 CSDN https://blog.csdn.net/u012586326,原創不易,請勿轉載!