031、none和host网络的适用场景(2019-02-18 周一)

 
本节开始,会学习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,后面的章节会做详细介绍
 
posted @ 2019-02-19 00:23  三角形  阅读(239)  评论(0编辑  收藏  举报