日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

容器学习 之 容器访问外部网络(十四)

發(fā)布時(shí)間:2024/2/28 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 容器学习 之 容器访问外部网络(十四) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

容器訪問外部世界

docker host 是可以訪問外網(wǎng)的。

容器也能訪問外網(wǎng)

為什么容器能夠訪問到外網(wǎng)呢?我們先來查看iptables的規(guī)則

-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE

其含義是:來自 172.17.0.0/16 網(wǎng)段的包,目標(biāo)地址是外網(wǎng)(! -o docker0),就把它交給 MASQUERADE 處理。而 MASQUERADE 的處理方式是將包的源地址替換成 host 的地址發(fā)送出去,即做了一次網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)。

下面我們通過 tcpdump 查看地址是如何轉(zhuǎn)換的。先查看 docker host 的路由表:

默認(rèn)路由通過 enp0s3 發(fā)出去,所以我們要同時(shí)監(jiān)控 enp0s3 和 docker0 上的 icmp(ping)數(shù)據(jù)包。

當(dāng) busybox ping bing.com 時(shí),tcpdump 輸出如下:

docker0 收到 busybox 的 ping 包,源地址為容器 IP 172.17.0.2,這沒問題,交給 MASQUERADE 處理。這時(shí),在 enp0s3 上我們看到了變化:

ping 包的源地址變成了 enp0s3 的 IP 10.0.2.15

這就是 iptable NAT 規(guī)則處理的結(jié)果,從而保證數(shù)據(jù)包能夠到達(dá)外網(wǎng)。下面用一張圖來說明這個(gè)過程:

  • busybox 發(fā)送 ping 包:172.17.0.2 > www.bing.com。
  • docker0 收到包,發(fā)現(xiàn)是發(fā)送到外網(wǎng)的,交給 NAT 處理。
  • NAT 將源地址換成 enp0s3 的 IP:10.0.2.15 > www.bing.com。
  • ping 包從 enp0s3 發(fā)送出去,到達(dá) www.bing.com。
  • 外部世界訪問容器

    docker 可將容器對(duì)外提供服務(wù)的端口映射到 host 的某個(gè)端口,外網(wǎng)通過該端口訪問容器。容器啟動(dòng)時(shí)通過-p參數(shù)映射端口:

    容器啟動(dòng)后,可通過 docker ps 或者 docker port 查看到 host 映射的端口。在上面的例子中,httpd 容器的 80 端口被映射到 host 32773 上,這樣就可以通過 :<32773> 訪問容器的 web 服務(wù)了。

    我們也可以在 -p 中指定映射到 host 某個(gè)特定端口,例如可將 80 端口映射到 host 的 8080 端口:

    每一個(gè)映射的端口,host 都會(huì)啟動(dòng)一個(gè) docker-proxy 進(jìn)程來處理訪問容器的流量:

    以 0.0.0.0:32773->80/tcp 為例分析整個(gè)過程:

  • docker-proxy 監(jiān)聽 host 的 32773 端口。
  • 當(dāng) curl 訪問 10.0.2.15:32773 時(shí),docker-proxy 轉(zhuǎn)發(fā)給容器 172.17.0.2:80。
  • httpd 容器響應(yīng)請求并返回結(jié)果。
  • 總結(jié)

    以上是生活随笔為你收集整理的容器学习 之 容器访问外部网络(十四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。