容器学习 之 容器的网络类型(十二)
Docker 安裝時會自動在 host 上創建三個網絡,我們可用 docker network ls 命令查看:
root@ubuntu:/myregistry/docker/registry/v2/repositories# docker network ls NETWORK ID NAME DRIVER SCOPE db8c44d1411e bridge bridge local d71b0f0fe06e host host local aa76b578a078 none null localnone 網絡
none 網絡就是什么都沒有的網絡。掛在這個網絡下的容器除了 lo,沒有其他任何網卡。容器創建時,可以通過 --network=none 指定使用 none 網絡。
封閉意味著隔離,一些對安全性要求高并且不需要聯網的應用可以使用 none 網絡。
root@ubuntu:/myregistry/docker/registry/v2/repositories# docker run -it --network=none busybox Unable to find image 'busybox:latest' locally latest: Pulling from library/busybox 90e01955edcd: Pull complete Digest: sha256:2a03a6059f21e150ae84b0973863609494aad70f0a80eaeb64bddd8d92465812 Status: Downloaded newer image for busybox:latest / # ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)host 網絡
連接到 host 網絡的容器共享 Docker host 的網絡棧,容器的網絡配置與 host 完全一樣。可以通過 --network=host 指定使用 host 網絡。
直接使用 Docker host 的網絡最大的好處就是性能,如果容器對網絡傳輸效率有較高要求,則可以選擇 host 網絡。當然不便之處就是犧牲一些靈活性,比如要考慮端口沖突問題,Docker host 上已經使用的端口就不能再用了。
root@ubuntu:/myregistry/docker/registry/v2/repositories# docker run -it --network=host busybox / # ifconfig docker0 Link encap:Ethernet HWaddr 02:42:73:72:1C:C8 inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0inet6 addr: fe80::42:73ff:fe72:1cc8/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:4728 errors:0 dropped:0 overruns:0 frame:0TX packets:4862 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:265017 (258.8 KiB) TX bytes:49718499 (47.4 MiB)ens33 Link encap:Ethernet HWaddr 00:0C:29:39:C0:ED inet addr:192.168.21.132 Bcast:192.168.21.255 Mask:255.255.255.0inet6 addr: fe80::4353:2d1:a:26e2/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:698332 errors:0 dropped:0 overruns:0 frame:0TX packets:123099 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:933624546 (890.3 MiB) TX bytes:8561438 (8.1 MiB)lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:12380 errors:0 dropped:0 overruns:0 frame:0TX packets:12380 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:50146407 (47.8 MiB) TX bytes:50146407 (47.8 MiB)veth1848a47 Link encap:Ethernet HWaddr 02:D3:35:AE:4D:3B inet6 addr: fe80::d3:35ff:feae:4d3b/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:4720 errors:0 dropped:0 overruns:0 frame:0TX packets:4825 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:329525 (321.8 KiB) TX bytes:49713860 (47.4 MiB)veth3659f03 Link encap:Ethernet HWaddr CA:48:EA:28:A5:51 inet6 addr: fe80::c848:eaff:fe28:a551/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:65 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:6568 (6.4 KiB)bridge 網絡
Docker 安裝時會創建一個 命名為 docker0 的 linux bridge。如果不指定–network,創建的容器默認都會掛到 docker0 上。
root@ubuntu:/myregistry/docker/registry/v2/repositories# brctl show bridge name bridge id STP enabled interfaces docker0 8000.024273721cc8 no當前 docker0 上沒有任何其他網絡設備,我們創建一個容器看看有什么變化。
root@ubuntu:/myregistry/docker/registry/v2/repositories# docker run -d httpd 3fe281b052133366e2420922ae81cdf47620a2a0665af0a4e800cd4747bd2287 root@ubuntu:/myregistry/docker/registry/v2/repositories# brctl show bridge name bridge id STP enabled interfaces docker0 8000.024273721cc8 no vethf8aed09一個新的網絡接口 vethf8aed09 被掛到了 docker0 上,vethf8aed09就是新創建容器的虛擬網卡。
容器有一個網卡 eth0@if34。大家可能會問了,為什么不是vethf8aed09 呢?
實際上 eth0@if34 和 vethf8aed09 是一對 veth pair。veth pair 是一種成對出現的特殊網絡設備,可以把它們想象成由一根虛擬網線連接起來的一對網卡,網卡的一頭(eth0@if34)在容器中,另一頭(vethf8aed09)掛在網橋 docker0 上,其效果就是將 eth0@if34 也掛在了 docker0 上。
總結
以上是生活随笔為你收集整理的容器学习 之 容器的网络类型(十二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 容器学习 之 限制容器资源(十一)
- 下一篇: 容器学习 之 自定义容器网络(十三)