容器的網路設定
輸入docker network ls
列出目前的docker network
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
56e6b7438155 bridge bridge local
98a402d07220 host host local
9511eb2b9ea0 none null local
Bridge Network
Bridge Network主要是透過Linux kernel一個叫做network namespace的功能來建立隔離式的網路。在Docker Daemon啟動時,會根據下列步驟建立一個docker0的網路介面
檢查docker0 bridge是否存在,如不存在則建立docker0 bridge
搜尋與當前路由不衝突的IP網段
選擇IP網段,並綁定至docker0
輸入ifconfig docker0
可以查看相關資訊
root@vm:/home/jennifer# ifconfig docker0
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:34ff:fe9a:e7d1 prefixlen 64 scopeid 0x20<link>
ether 02:42:34:9a:e7:d1 txqueuelen 0 (Ethernet)
RX packets 2671008 bytes 258331993 (258.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2701399 bytes 289253518 (289.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
這個便是容器的預設網路,若在啟動容器時沒有指定,bridge network就是容器的網路模式。在bridge network上運行的容器可互相溝通,利用此模式建立的容器會有各自的IP address(如下圖)。

Host Network
若容器在建立時,設定--net=host
,代表直接使用主機上的網路,若容器上的API運行在80 port,那麼這個80 port指的就是主機上的port。唯一要注意的是,若主機上的port已被其他程序使用,可能會導致容器啟動後無法正常使用。
None Network
若容器在建立時,設定--net=none
也就是關閉容器的網路
Bridge Network與Host Network解釋

Last updated
Was this helpful?