如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理

這篇文章主要介紹了如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)公司"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機版的企業(yè)網(wǎng)站。實現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!成都創(chuàng)新互聯(lián)公司具備承接各種類型的做網(wǎng)站、成都網(wǎng)站制作項目的能力。經(jīng)過10年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評。

有時因為網(wǎng)絡(luò)原因,比如公司 NAT,或其它啥的,需要使用代理。Docker 的代理配置,略顯復(fù)雜,因為有三種場景。但基本原理都是一致的,都是利用 Linux 的 http_proxy 等環(huán)境變量。

Dockerd 代理

在執(zhí)行docker pull時,是由守護(hù)進(jìn)程dockerd來執(zhí)行。因此,代理需要配在dockerd的環(huán)境中。而這個環(huán)境,則是受systemd所管控,因此實際是systemd的配置。

sudo mkdir -p /etc/systemd/system/docker.service.d  sudo touch /etc/systemd/system/docker.service.d/proxy.conf

在這個proxy.conf文件(可以是任意*.conf的形式)中,添加以下內(nèi)容:

[Service]  Environment="HTTP_PROXY=http://proxy.example.com:8080/"  Environment="HTTPS_PROXY=http://proxy.example.com:8080/"  Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

其中,proxy.example.com:8080 要換成可用的免密代理。通常使用 cntlm 在本機自建免密代理,去對接公司的代理??蓞⒖肌禠inux下安裝配置Cntlm 代理》。

Container 代理

在容器運行階段,如果需要代理上網(wǎng),則需要配置 ~/.docker/config.json。以下配置,只在Docker 17.07及以上版本生效。

{   "proxies":   {     "default":     {       "httpProxy": "http://proxy.example.com:8080",       "httpsProxy": "http://proxy.example.com:8080",       "noProxy": "localhost,127.0.0.1,.example.com"     }   }  }

這個是用戶級的配置,除了 proxies,docker login 等相關(guān)信息也會在其中。而且還可以配置信息展示的格式、插件參數(shù)等。

此外,容器的網(wǎng)絡(luò)代理,也可以直接在其運行時通過 -e 注入 http_proxy 等環(huán)境變量。這兩種方法分別適合不同場景。config.json 非常方便,默認(rèn)在所有配置修改后啟動的容器生效,適合個人開發(fā)環(huán)境。在CI/CD的自動構(gòu)建環(huán)境、或者實際上線運行的環(huán)境中,這種方法就不太合適,用 -e 注入這種顯式配置會更好,減輕對構(gòu)建、部署環(huán)境的依賴。當(dāng)然,在這些環(huán)境中,最好用良好的設(shè)計避免配置代理上網(wǎng)。

Docker Build 代理

雖然 docker build 的本質(zhì),也是啟動一個容器,但是環(huán)境會略有不同,用戶級配置無效。在構(gòu)建時,需要注入 http_proxy 等參數(shù)。

docker build . \      --build-arg "HTTP_PROXY=http://proxy.example.com:8080/" \      --build-arg "HTTPS_PROXY=http://proxy.example.com:8080/" \      --build-arg "NO_PROXY=localhost,127.0.0.1,.example.com" \      -t your/image:tag

注意:無論是 docker run 還是 docker build,默認(rèn)是網(wǎng)絡(luò)隔絕的。如果代理使用的是 localhost:3128 這類,則會無效。這類僅限本地的代理,必須加上 --network host 才能正常使用。而一般則需要配置代理的外部IP,而且代理本身要開啟 Gateway 模式。

重啟生效

代理配置完成后,reboot 重啟當(dāng)然可以生效,但不重啟也行。

docker build 代理是在執(zhí)行前設(shè)置的,所以修改后,下次執(zhí)行立即生效。Container 代理的修改也是立即生效的,但是只針對以后啟動的 Container,對已經(jīng)啟動的 Container 無效。

dockerd 代理的修改比較特殊,它實際上是改 systemd 的配置,因此需要重載 systemd 并重啟 dockerd 才能生效。

sudo systemctl daemon-reload  sudo systemctl restart docker

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

分享名稱:如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理
網(wǎng)站地址:http://www.muchs.cn/article2/ghjpoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)頁設(shè)計公司企業(yè)網(wǎng)站制作、服務(wù)器托管、手機網(wǎng)站建設(shè)、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)