五、網路
(一)none和host網路的適用場景
? 我們會首先學習 Docker 提供的幾種原生網路,以及如何創建自定義網路,然后探討容器之間如何通信,以及容器與外界如何互動,
? Docker 網路從覆寫范圍可分為單個 host 上的容器網路和跨多個 host 的網路,本章重點討論前一種,對于更為復雜的多 host 容器網路,我們會在后面進階技術章節單獨討論,
(1)none網路
? 故名思議,none 網路就是什么都沒有的網路,掛在這個網路下的容器除了 lo,沒有其他任何網卡,容器創建時,可以通過 --network=none 指定使用 none 網路,
root@cuiyongchao:~# docker run -it --network=none busybox
/ # ifconfig
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:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
/ #
或者通過這個命令查看:
root@cuiyongchao:~# docker inspect 97f1a9c1273d
? 我們不禁會問,這樣一個封閉的網路有什么用呢?其實還真有應用場景,封閉意味著隔離,一些對安全性要求高并且不需要聯網的應用可以使用 none 網路,比如某個容器的唯一用途是生成隨機密碼,就可以放到 none 網路中避免密碼被竊取,當然大部分容器是需要網路的,我們接著看 host 網路,
(2)host網路
? 連接到 host 網路的容器共享 Docker host 的網路堆疊,容器的網路配置與 host 完全一樣,可以通過 --network=host 指定使用 host 網路,
root@cuiyongchao:~# docker run -it --network=host busybox
/ # ifconfig
docker0 Link encap:Ethernet HWaddr 02:42:B3:16:D4:15
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
inet6 addr: fe80::42:b3ff:fe16:d415/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:23148 errors:0 dropped:0 overruns:0 frame:0
TX packets:31722 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1048354 (1023.7 KiB) TX bytes:182793558 (174.3 MiB)
ens33 Link encap:Ethernet HWaddr 00:0C:29:A6:E4:3E
inet addr:10.0.0.20 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea6:e43e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:580959 errors:0 dropped:0 overruns:0 frame:0
TX packets:177669 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:704485368 (671.8 MiB) TX bytes:67969849 (64.8 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1550 errors:0 dropped:0 overruns:0 frame:0
TX packets:1550 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:168377 (164.4 KiB) TX bytes:168377 (164.4 KiB)
veth5693146 Link encap:Ethernet HWaddr 86:59:CB:20:CA:B2
inet6 addr: fe80::8459:cbff:fe20:cab2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:1286 (1.2 KiB)
vethea16017 Link encap:Ethernet HWaddr 7E:36:AE:14:FD:3A
inet6 addr: fe80::7c36:aeff:fe14:fd3a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:1606 (1.5 KiB)
vethf263a23 Link encap:Ethernet HWaddr 56:47:0B:E5:EE:3D
inet6 addr: fe80::5447:bff:fee5:ee3d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:1426 (1.3 KiB)
/ # hostname
cuiyongchao
/ #
后者通過這個命令查看network:
root@cuiyongchao:~# docker inspect d748e45dc1cf
? 在容器中可以看到 host 的所有網卡,并且連 hostname 也是 host 的,host 網路的使用場景又是什么呢?
? 直接使用 Docker host 的網路最大的好處就是性能,如果容器對網路傳輸效率有較高要求,則可以選擇 host 網路,當然不便之處就是犧牲一些靈活性,比如要考慮埠沖突問題,Docker host 上已經使用的埠就不能再用了,
? Docker host 的另一個用途是讓容器可以直接配置 host 網路,比如某些跨 host 的網路解決方案,其本身也是以容器方式運行的,這些方案需要對網路進行配置,比如管理 iptables,大家將會在后面進階技術章節看到,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/222461.html
標籤:其他
上一篇:這是今天真正的大事:RCEP
