Docker的那些事儿—none和host网络(21)
2018-03-14 本文已影响4人
sjyu_eadd
从本节开始,开启网络部分学习。
none网络
none网络意味着没有网络,所创建的容器只有lo,没有其他的网卡。容器创建时可以使用--network=none指定使用none网络。
不要觉得none网络没有什么用处。貌似最简单的网络往往又是最复杂的。none网络没有办法联网,封闭的网络能很好的保证容器的安全性,为用户提供了最大的灵活性,使得用户可以创建并使用自己的复杂网络。
host网络
host网络意味着容器与宿主机共用一套网络,也就是说容器使用的网络就是宿主机的网络。使用--network=host指定使用host网络。
宿主机的网络栈如下:
可以看到容器内的网络栈和宿主机一模一样,甚至连容器的主机名都和宿主机一样。
另外,容器内部服务的端口也可以使用宿主机的端口。例如:httpd服务80端口
我们之前都是这样启动:docker run -itd -p 8000:80 --name my_web1 httpd
httpd服务的80端口映射到宿主机的8000端口
而如果使用host网络就可以这样:docker run -itd --network=host --name my_web2 httpd
httpd服务直接使用宿主机的80端口。因此host网络具有如下优缺点:
优点:由于复用了宿主机网络,网络性能好,使得数据的传输效率也高;
缺点:宿主机端口可能存在冲突;破坏了容器的网络隔离性。
下一章节我们进入Docker 网络部分学习