docker的四種網路模式

2021-10-14 02:41:34 字數 2919 閱讀 9300

docker容器間通訊

實現原理

docker使用linux橋接,在宿主機虛擬乙個docker容器網橋(docker0),docker啟動乙個容器時會根據docker網橋的網段分配給容器乙個ip位址,稱為container-ip,同時docker網橋是每個容器的預設閘道器。因為在同一宿主機內的容器都接入同乙個網橋,這樣容器之間就能夠通過容器的container-ip直接通訊。

docker網橋是宿主機虛擬出來的,並不是真實存在的網路裝置,外部網路是無法定址到的,這也意味著外部網路無法通過直接container-ip訪問到容器。如果容器希望外部訪問能夠訪問到,可以通過對映容器埠到宿主主機(埠對映),即docker run建立容器時候通過 -p 或 -p 引數來啟用,訪問容器的時候就通過[宿主機ip]:[容器埠]訪問容器。

docker容器網路

docker在安裝後自動提供3種網路,可以使用docker network ls命令檢視

[root@localhost ~]# docker network ls

network id name driver scope

86cb7ef9a498 bridge bridge local

9ea4aec27884 host host local

5318e5a6c468 none null local

我們在使用docker run建立docker容器時,可以用–net選項指定容器的網路模式,docker有以下4種網路模式:

模式配置

host模式

使用–net=host指定。

container模式

使用–net=container:name_or_id指定。

none模式

使用–net=none指定。

bridge模式

使用–net=bridge指定,預設設定。

docker容器型別

bridge 橋接模式(預設的網路設定)

[root@localhost ~]# ip a

3: docker0:

mtu 1500 qdisc noqueue state up group default

link/ether 02:42:51:99:b5:0a brd ff:ff:ff:ff:ff:ff

inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

valid_lft forever preferred_lft forever

inet6 fe80::42:51ff:fe99:b50a/64 scope link

//執行nginx 埠對映

[root@localhost ~]# docker run --rm -it -p80:80 nginx

//使用iptables -t nat -vnl檢視規則

[root@localhost ~]# iptables -t nat -nvl

chain output (policy accept 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

0 0 docker all -- * * 0.0.0.0/0 !127.0.0.0/8 addrtype match dst-type local

chain docker (2 references)

pkts bytes target prot opt in out source destination

0 0 return all -- docker0 * 0.0.0.0/0 0.0.0.0/0

0 0 dnat tcp -- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:172.17.0.3:80

bridge模式示意圖

host 網路模式

容器直接復用了宿主機的ip和埠,並且使用了宿主機的所有網絡卡,容器在其他方面,如檔案系統、程序列表等還是和宿主機隔離的

host模式示意圖

container模式

就是和其他容器使用相同的網路 ,檔案系統、程序列表等還是隔離的。兩個容器的程序可以通過lo網絡卡裝置通訊

container模式示意圖

none模式

不為 docker 容器構造任何網路環境。一旦docker 容器採用了none 網路模式,那麼容器內部就只能使用loopback網路裝置,不會再有其他的網路資源。docker container的none網路模式意味著不給該容器建立任何網路環境,容器只能使用127.0.0.1的本機網路。

none模式示意圖

Docker 四種網路模式

我們在使用docker run建立docker容器時,可以用 net選項指定容器的網路模式,docker有以下4種網路模式 host模式,使用 net host指定。container模式,使用 net container name or id指定。none模式,使用 net none指定。brid...

docker四種模式

1 host模式 眾所周知,docker使用了linux的namespaces技術來進行資源隔離,如pid namespace隔離程序,mount namespace隔離檔案系統,network namespace隔離網路等。乙個network namespace提供了乙份獨立的網路環境,包括網絡卡...

vbox的四種網路模式

一 nat模式 特點 1 如果主機可以上網,虛擬機器可以上網 2 虛擬機器之間不能ping通 3 虛擬機器可以ping通主機 此時ping虛擬機器的閘道器,即是ping主機 4 主機不能ping通虛擬機器 應用場景 虛擬機器只要求可以上網,無其它特殊要求,滿足最一般需求 二 bridged adap...