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...