Docker入門五網絡管理
time: 2019-12-9
html
網絡管理
安裝Docker後,會自動建立三個默認的網絡:bridge
,host
,none
docker
$ docker network ls NETWORK ID NAME DRIVER SCOPE 0fb85b99a496 bridge bridge local 88f752db374c host host local 7a374bb494a0 none null local
網絡映射
bridge
橋接網絡,在安裝docker會建立一個名字爲docker0的橋接網絡.能夠經過ifconfig查看:bash
$ ifconfig docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:a4:a7:cb:93 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
默認狀況下,每建立一個新容器,都會自動鏈接到bridge網絡.
docker0默認網段是192.168.0.0/20
建立多個容器,會自動分配該網段下的ip, 各個容器能夠使用內網ip直接相互通訊.
須要注意的是,對於默認的bridge每次重啓容器,容器的IP地址都是會發生變化的.
Docker bridge使用端口的方式爲設置端口映射,只是經過iptables
實現的.網絡
iptables圖文詳解:https://www.zsythink.net/archives/1199
iptables增刪改查:http://www.zsythink.net/archives/1517tcp
iptables nat表
# 查詢當前規則 sudo iptables -t nat -nvL --line-numbers # 添加一條規則,大體解釋爲將從非 docker0 接口上,目的端口爲 10002 的 tcp 報文,修改其目的地址爲 192.168.0.3:80 sudo iptables -t nat -A DOCKER ! -i docker0 -p tcp --dport 10002 -j DNAT --to-destination 192.168.0.3:80 # 刪除nat規則 sudo iptables -t nat -D Docker num
iptables fileter表
#查看filter規則 sudo iptables -nvL --line-numbers # 容許轉發規則 sudo iptables -t filter -A FORWARD ! -i docker0 -o docker0 -p tcp -d 192.168.0.3 -j ACCEPT --dport 80 #或者你也能夠選擇將其加到由 docker 定義的 DOCKER 鏈中,上面的命令和下面的命令選擇其中的一個便可 sudo iptables -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 192.168.0.3 -j ACCEPT --dport 80 刪除filter規則 sudo iptables -D Docker num
自定義網絡
docker 在安裝時會默認建立一個橋接網絡,除了使用默認網絡以外,咱們還能夠建立本身的 bridge 或 overlay 網絡。
經過這種方式,能夠爲每一個容器綁定一個固定的ip
docker network creat network1
這樣咱們就建立了一個網絡,能夠經過ifconfig查看
刪除網絡
docker network rm network1
url
指定網關和子網spa
docker network create -d bridge --subnet=192.168.16.0/24 --gateway=192.168.16.1 network1