中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker和iptables的關系是什么

發布時間:2021-06-22 14:59:24 來源:億速云 閱讀:315 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關docker和iptables的關系是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。


1、首先了解一下docker的網絡機制

docker有4中網絡模式:

a.host

b.container

c.none

d.bridge

docker使用linux中的namespace隔離資源,一個docker容器會分配一個獨立的network namespace。但是如果容器采用host時,那么這個容器會和宿主機公用一個network namespqce,容器將不會虛擬出自己的網卡,配置自己的ip,而是使用宿主機的ip和端口

contianer模式是指和已經存在的一個容器共享一個network namespaces,那兩個容器除了網絡方面,其它的資源還是隔離的,兩個容器的進程可以通過lo網卡設備通信

none模式時docker擁有自己的network namespaces,但是docker進行任何網絡配置,需要我們自己為docker容器添加網絡、配置ip

bridge模式是docker默認的網絡設置,此模式會為每個容器分配network namespace、設置ip等,并將一個主機的docker容器連接到一個虛擬網絡上

下面說明一下最常用的bridge模式

1.1 bridge模式下的拓撲結構

如圖所示:

當docker deamon 啟動的時候會在主機上創建一個名為docker0的虛擬網橋,此主機上啟動的docker容器會連接到這個虛擬網橋上。虛擬網橋的工作方式和物理交換機類似。

docker會從分配與宿主機不同的ip地址給docker網橋和container。

docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.0.1  netmask 255.255.240.0  broadcast 0.0.0.0

        ether 02:42:a7:07:f4:fc  txqueuelen 0  (Ethernet)

        RX packets 13612806  bytes 1998086329 (1.8 GiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 17525195  bytes 2961142842 (2.7 GiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以把docker0看作網橋的管理接口
Chain DOCKER (1 references)

target     prot opt source               destination         

ACCEPT     tcp  --  0.0.0.0/0            192.168.0.3          tcp dpt:15672

ACCEPT     tcp  --  0.0.0.0/0            192.168.0.3          tcp dpt:5672

ACCEPT     tcp  --  0.0.0.0/0            192.168.0.2          tcp dpt:6379

ACCEPT     tcp  --  0.0.0.0/0            192.168.0.4          tcp dpt:80

ACCEPT     tcp  --  0.0.0.0/0            192.168.0.5          tcp dpt:80

ACCEPT     tcp  --  0.0.0.0/0            192.168.0.6          tcp dpt:33246

以上是iptables出來的的不同container的IP和port


1.2 新建的docker container 完成以上網絡配置的過程大致如此:

首先在主機上創建虛擬網卡veth pair設備,成對出現,組成一個數據通道。一端在container里,并命名為eth0,另一端放在主機中以veth。。命令,用$brctl show如下:

bridge name bridge id STP enabled interfaces

docker0 8000.0242a707f4fc no veth0dca6c1

veth530a377

vethb6dcd90

vethe08439b

vethe56b601

vethfc60fba


然后會分配一個IP給container,并設置docker0的ip地址為容器的默認網關

1.3 bridge模式下的容器通信

在bridge模式下連在同一網橋下的容器可以相互通信。

容器發包出去的過程:ip包會從container發往自己默認的網關docker0,到包到達docker0時就時到達了主機,這時候會查詢主機的路由表,發現包應該從主機的網卡eth0出去,如下的iptables的規則就起作用,對包做snat轉換,將原地址轉成eth0的地址,這樣對于外部來說docker容器就是不可見的:

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

容器接受包的過程,需要用到主機的端口映射:

看ipbtales:

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination         

DOCKER-ISOLATION  all  --  anywhere             anywhere            

DOCKER     all  --  anywhere             anywhere            

ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED

ACCEPT     all  --  anywhere             anywhere            

ACCEPT     all  --  anywhere             anywhere            

DROP       all  --  anywhere             anywhere            

 對主機相應端口的流量進行dnat轉換,將流量發往container

上述就是小編為大家分享的docker和iptables的關系是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兰西县| 衡山县| 大邑县| 库尔勒市| 德保县| 九龙县| 滕州市| 金寨县| 宁津县| 云霄县| 赫章县| 太和县| 象州县| 普定县| 襄汾县| 南漳县| 华蓥市| 崇州市| 穆棱市| 新巴尔虎左旗| 汉阴县| 奉贤区| 大安市| 台南县| 武功县| 象州县| 从江县| 河南省| 虞城县| 姜堰市| 扎囊县| 巴中市| 抚顺县| 德江县| 都江堰市| 习水县| 洪泽县| 江油市| 丹阳市| 长沙县| 阿勒泰市|