031、none和host網絡的適用場景(2019-02-18 周一)
阿新 • • 發佈:2019-02-19
fault ont rgba ifconfig ace 多個 scope 除了 cast 參考https://www.cnblogs.com/CloudMan6/p/7053617.html
本節開始,會學習docker的幾種原生網絡,以及如何創建自定義網絡。然後探究容器之間如何通信,以及容器與外界如何交互
docker網絡從覆蓋範圍可以分為單個host上的容器網絡和跨多個host的網絡,本章終點學習前一種。對於更復雜的多host網絡,將在後面的進階部分學習。
docker安裝時會自動在host上創建三個網絡,我們可以用docker network ls 命令查看
root@docker-lab:~# docker network ls
NETWORK ID NAME DRIVER SCOPE
b41bf72cd691 bridge bridge local
e5cb8d603efd host host local
f9dc6032baba none null local
none網絡
none網絡就是什麽網絡都沒有,掛載這個網絡下的容器除了lo以外,沒有其他網卡。容器創建時,可以通過 --network=none 指定容器使用none網絡。
root@docker-lab:~# docker run -it --network=none busybox
/ # ifconfig -a
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
/ #
一個封閉的網絡有什麽用呢,封閉即隔離,一些對安全性要求較高並且不需要聯網的應用可以使用none網絡,比如專門用來生成隨機密碼的容器。
host網絡
連接到host網絡的容器共享docker host的網絡棧,容器的網絡配置與docker host完全一樣。可以通過 --network=host 指定容器使用host網絡
root@docker-lab:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:02:7e:68 brd ff:ff:ff:ff:ff:ff
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 52:54:01:02:27:95 brd ff:ff:ff:ff:ff:ff
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
link/ether 02:42:0e:6c:b4:04 brd ff:ff:ff:ff:ff:ff
root@docker-lab:~# docker run -it --network=host busybox
/ # ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 52:54:00:02:7e:68 brd ff:ff:ff:ff:ff:ff
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 52:54:01:02:27:95 brd ff:ff:ff:ff:ff:ff
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
link/ether 02:42:0e:6c:b4:04 brd ff:ff:ff:ff:ff:ff
/ #
/ # hostname
docker-lab
可以看到host網絡的容器,使用的網絡以及hostname都和docker host一樣
直接使用host網絡最大的好處就是性能,如果容器對網絡傳輸效率要求比較高,則可以選擇host網絡。
缺點是靈活性差,容器和docker host公用一套端口,需要解決端口沖突的問題。
host網絡的另一個用途是讓容器可以直接配置docker host網絡,比如某些跨docker host的網絡解決方案,其本身也是以容器方式運行,這些方案需要對網絡進行配置,比如管理iptables,後面的章節會做詳細介紹
031、none和host網絡的適用場景(2019-02-18 周一)