自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

容器如何訪問外部世界?- 每天5分鐘玩轉(zhuǎn) Docker 容器技術(shù)

云計算
下面我們討論容器如何與外部世界通信。希望對大家有所幫助。

[[195766]]

下面我們討論容器如何與外部世界通信。這里涉及兩個方向:

容器訪問外部世界

外部世界訪問容器

容器訪問外部世界

在我們當前的實驗環(huán)境下,docker host 是可以訪問外網(wǎng)的。

我們看一下容器是否也能訪問外網(wǎng)呢?

可見,容器默認就能訪問外網(wǎng)。

請注意:這里外網(wǎng)指的是容器網(wǎng)絡以外的網(wǎng)絡環(huán)境,并非特指 internet。

現(xiàn)象很簡單,但更重要的:我們應該理解現(xiàn)象下的本質(zhì)。

在上面的例子中,busybox 位于 docker0 這個私有 bridge 網(wǎng)絡中(172.17.0.0/16),當 busybox 從容器向外 ping 時,數(shù)據(jù)包是怎樣到達 bing.com 的呢?

這里的關(guān)鍵就是 NAT。我們查看一下 docker host 上的 iptables 規(guī)則:

在 NAT 表中,有這么一條規(guī)則:

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

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

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

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

當 busybox ping bing.com 時,tcpdump 輸出如下:

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

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

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

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ā)送出去,到達 www.bing.com。

通過 NAT,docker 實現(xiàn)了容器對外網(wǎng)的訪問。

責任編輯:武曉燕 來源: 博客園
相關(guān)推薦

2021-08-11 09:47:22

項目Django 管理

2017-10-11 15:17:42

sklearn機器學習pandas

2023-07-23 18:47:59

Docker開源

2021-01-29 11:43:53

SSHLinux命令

2011-09-19 13:41:54

2021-06-02 09:12:04

App自動化測試測試自動化

2015-12-03 14:10:26

systemd容器Linux

2021-01-27 18:15:01

Docker底層宿主機

2022-03-23 09:32:38

微服務容器Kubernetes

2015-05-07 11:31:21

服務器虛擬化深信服

2015-11-26 09:51:57

OpenShift 3Docker開源PaaS

2025-03-18 00:00:00

云原生系統(tǒng)訂單

2012-06-28 10:26:51

Silverlight

2017-03-20 14:51:33

2023-09-11 13:08:26

2022-03-10 08:24:17

Docker容器SaaS

2022-05-30 08:34:49

PythonSQL

2021-12-01 06:50:50

Docker底層原理

2014-11-20 10:55:47

Docker容器技術(shù)虛擬化

2020-09-14 11:30:26

HTTP3運維互聯(lián)網(wǎng)
點贊
收藏

51CTO技術(shù)棧公眾號