docker容器內(nèi)網(wǎng)絡請求緩慢問題解決

發(fā)布時間:2024-02-15
在使用docker的過程中發(fā)現(xiàn)了幾個問題,在docker里進行的網(wǎng)絡請求經(jīng)常會失敗,比如npm install以及bundle install等操作,或者是作為中間層在應用中去獲取api數(shù)據(jù)的過程經(jīng)常會出現(xiàn)timeout等情況,所以開始探究docker的網(wǎng)絡機制,以解決網(wǎng)絡請求太慢的問題。
docker 是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的 linux 機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
一、docker的網(wǎng)絡模式
1、none
當配置為none時,docker容器網(wǎng)絡無法輸入輸出,與世隔絕。
2、bridge
默認為bridge模式,docker有自己的虛擬網(wǎng)卡,通過橋接的方式從主機獲得網(wǎng)絡。
3、host
當指定為host時,主機的網(wǎng)卡直接暴露給了容器,直接通過主機的網(wǎng)絡上網(wǎng),比如要拿主機上的redis服務127.0.0.1:6357,就得通過這種方法,不過就比較不安全了。
4、container
使用其他容器的網(wǎng)絡
二、docker的dns解析
docker容器本質(zhì)上也是個linux,所以dns的解析方法和linux一樣,優(yōu)先是找/etc/hosts文件,像localhost這種域名就是寫在這個文件里,比如:
127.0.0.1 localhost如果docker容器link了其他容器,這里也會多出link的域名,比如:
docker run --name app --link app-redis:redis -d ubuntu就會在hosts里多出
172.17.0.3 app-redis 038c8388e4a1找完/etc/hosts文件,然后是/etc/resolv.conf文件:
domain local nameserver 192.168.65.1 nameserver 192.168.65.10三、解決docker容器里網(wǎng)絡請求慢的問題
經(jīng)過抓包測試等分析,發(fā)現(xiàn)網(wǎng)絡請求慢,主要發(fā)生在dns解析中,所以主要采取dns優(yōu)化:
如果請求的是自己內(nèi)網(wǎng)的api, 可以直接修改/etc/hosts文件,如果是外網(wǎng)的請求可以通過更改/etc/resolv.conf里的nameserver實現(xiàn)。
docker容器肯定不是直接通過修改文件實現(xiàn)的,可以通過run的命令實現(xiàn):
# 添加host docker run --name app --add-host='api.embbnux.com:10.98.10.98' -d ubuntu # 指定dns server docker run --name app --dns=223.5.5.5 --dns=8.8.8.8 -d ubuntu這樣在docker容器里dns解析階段的時間就被加速了
上一個:QJ31直流單雙臂電橋工作原理
下一個:驅(qū)動用薄膜電容器的最新技術趨勢

武漢惠民鮮花券什么時候發(fā)放 惠民鮮花券使用規(guī)則
低保申請多久可以批下來,什么條件可以申請低保
茶室:返璞歸真的東方美學
AC0201JR-075K1L,國巨車規(guī)電阻0201 5.1KΩ ±5% 1/20W
新入行的電工需要哪些技能
raytheon-anschuetz公司的編碼器在高速運動場合性能會受到影響嗎
臭氧發(fā)生器-湖南飲水消毒設備
嫁接英紅九號改造低效益茶園試驗研究
巴黎三日游攻略 巴黎三日游路線
冬季存放普洱茶的妙招
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos