使用代理進行 docker build 問題的解決思路

問題描述

在使用 docker build 打包鏡像時茄猫,遇到了需要使用代理訪問網(wǎng)絡(luò)的需求狈蚤。使用如下的 Dockerfile 來模擬這個場景:

FROM golang:1.12
RUN curl www.google.com --max-time 3

國內(nèi)一般網(wǎng)絡(luò)環(huán)境下困肩,curl www.google.com 是無法正常返回的,加入 --max-time 讓 curl 的耗時不要太長脆侮。

配置 http_proxy 變量

首先需要在環(huán)境變量中設(shè)置 http_proxy 和 https_proxy锌畸,使得訪問網(wǎng)絡(luò)的命令(這里使用 curl 來代表)能夠通過環(huán)境變量中配置的代理服務(wù)器訪問 www.google.com

docker build 命令雖然是在 docker 所在的宿主機上執(zhí)行的靖避,看上去像是直接使用了宿主機的網(wǎng)絡(luò)環(huán)境潭枣,但實際上 docker build 也是啟動了一個 container 進行構(gòu)建,所以在構(gòu)建過程中的所有命令都是在 container 中執(zhí)行的幻捏,http_proxy 和 https_proxy 的配置也應(yīng)該是在 container 中進行的盆犁。可以使用 ENV 來配置 container 中的環(huán)境變量篡九。

代理服務(wù)器啟動在宿主機的 1087 端口上谐岁,修改 dockerfile 文件:

FROM golang:1.12

ENV http_proxy "http://127.0.0.1:1087"
ENV HTTP_PROXY "http://127.0.0.1:1087"
ENV https_proxy "http://127.0.0.1:1087"
ENV HTTPS_PROXY "http://127.0.0.1:1087"

RUN curl www.google.com --max-time 3

重新執(zhí)行 docker build 會發(fā)現(xiàn) curl 依舊無法訪問 www.google.com,從報錯信息上可以看到 127.0.0.1 上的 1087 端口上并沒有服務(wù)榛臼。

訪問宿主機

由于 container 默認是橋接網(wǎng)絡(luò)伊佃,宿主機和 container 是平級的,被放在了一個虛擬的網(wǎng)段里沛善。訪問宿主機上的代理服務(wù)器锭魔,對于 container 來說實際上是訪問另一臺機器上的服務(wù)器,127.0.0.1 指向的是 container 本身路呜。在 docker 默認的橋接網(wǎng)絡(luò)中,宿主機的 IP 一般是 172.17.0.1(Linux)织咧,或者 192.168.65.1(MacOS)胀葱,可以將 http_proxy 中的 IP 換成 172.17.0.1/192.168.65.1,來實現(xiàn)通過宿主的代理服務(wù)器訪問網(wǎng)絡(luò)笙蒙,修改 dockerfile:

FROM golang:1.12

ENV http_proxy "http://172.17.0.1:1087"
ENV HTTP_PROXY "http://172.17.0.1:1087"
ENV https_proxy "http://172.17.0.1:1087"
ENV HTTPS_PROXY "http://172.17.0.1:1087"

RUN curl www.google.com --max-time 3

雖然使用這種方式可以達到目的抵屿,但是如果編譯環(huán)境變了或者代理服務(wù)器的配置變了,哪怕只是操作系統(tǒng)從 Linux 變成了 MacOS捅位,都得修改 dockerfile轧葛,顯然不夠解耦,也不方便艇搀。

配置網(wǎng)絡(luò)模式

docker 中還有一種 host 網(wǎng)絡(luò)模式尿扯,就是讓 container 使用宿主機的網(wǎng)絡(luò),相當于 container 在網(wǎng)絡(luò)層面和宿主機不做隔離焰雕,使用這種網(wǎng)絡(luò)模式執(zhí)行 docker build衷笋,就不需要在 dockerfile 中添加 http_proxy 環(huán)境變量,container 可以直接讀取宿主上的環(huán)境變量矩屁。

首先在宿主上導(dǎo)入 http_proxy 環(huán)境變量:

export http_proxy="http://127.0.0.1:1087";
export HTTP_PROXY="http://127.0.0.1:1087";
export https_proxy="http://127.0.0.1:1087";
export HTTPS_PROXY="http://127.0.0.1:1087"

接下來將 dockerfile 簡化:

FROM golang:1.12
RUN curl www.google.com --max-time 3

重新執(zhí)行辟宗,curl 就可以像在宿主上直接執(zhí)行一樣爵赵,通過代理訪問 www.google.com 了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泊脐,一起剝皮案震驚了整個濱河市空幻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌容客,老刑警劉巖秕铛,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耘柱,居然都是意外死亡如捅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進店門调煎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镜遣,“玉大人,你說我怎么就攤上這事士袄”兀” “怎么了?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵娄柳,是天一觀的道長寓辱。 經(jīng)常有香客問我,道長赤拒,這世上最難降的妖魔是什么秫筏? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮挎挖,結(jié)果婚禮上这敬,老公的妹妹穿的比我還像新娘。我一直安慰自己蕉朵,他們只是感情好崔涂,可當我...
    茶點故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著始衅,像睡著了一般冷蚂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汛闸,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天蝙茶,我揣著相機與錄音,去河邊找鬼诸老。 笑死尸闸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吮廉,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼苞尝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宦芦?” 一聲冷哼從身側(cè)響起宙址,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎调卑,沒想到半個月后抡砂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡恬涧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年注益,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溯捆。...
    茶點故事閱讀 38,777評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡丑搔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出提揍,到底是詐尸還是另有隱情啤月,我是刑警寧澤,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布劳跃,位于F島的核電站谎仲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏刨仑。R本人自食惡果不足惜郑诺,卻給世界環(huán)境...
    茶點故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杉武。 院中可真熱鬧间景,春花似錦、人聲如沸艺智。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽十拣。三九已至,卻和暖如春志鹃,著一層夾襖步出監(jiān)牢的瞬間夭问,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工曹铃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缰趋,地道東北人。 一個月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像秘血,于是被迫代替她去往敵國和親味抖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,687評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 五灰粮、Docker 端口映射 無論如何仔涩,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機是訪問不到的。此外粘舟,除了...
    R_X閱讀 1,740評論 0 7
  • Docker從2013年發(fā)布第一個版本以來熔脂,已經(jīng)火遍全球,技術(shù)迭代也比較頻繁柑肴,其周邊產(chǎn)品和技術(shù)也越來越豐富霞揉。Doc...
    歸海聽雪閱讀 12,269評論 7 44
  • 《Docker從入門到實踐》閱讀筆記 原書地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo閱讀 11,361評論 1 39
  • 青年路有個燒烤店,生意不是最好晰骑,門面也不是最大适秩。 這家店就像大街上的一個普通人,不起眼些侍,但存在隶症。 老板娘話不多,負...
    xukaiin閱讀 438評論 0 0
  • 1 講一個我的直男朋友程真。 有多直呢耗式? 講講他的女朋友標準胁住。 1身高最好一米六,瓜子臉刊咳,皮膚白彪见,長得漂亮,文靜愛...
    少女陸sunny閱讀 1,226評論 2 9