docker的网络模式
在使用docker run创建Docker容器时,可以用 --net 选项指定容器的网络模式,Docker可以有以下4种网络模式
- host模式:使用 --net=host 指定。
- none模式:使用 --net=none 指定。
- bridge模式:使用–net=bridge 指定,默认设置。
- container模式:使用 --net=container:NAME_or_ID 指定。

bridge
默认情况下,一个容器网络会是bridge模式
容器网络会和docker0这块网咖相连接
ping 所创建容器的网络会ping 通

再创建容器 再出现桥接和新的网卡

容器内网络和宿主机网络是连接的,比如1,2或 10,11这样

docker rm -f `docker ps -aq` 释放所有容器
host
docker run -d --name nginx --network host nginx 与宿主机共享网络
没有虚拟网络对和虚拟接口
注意:此模式容易造成资源哄抢
通过访问宿主机端口就可以访问容器

此时,通过postrouting会有一个伪装

如果一样的服务启动多次,因为与宿主机共享的缘故,会争抢端口,只有一个启动成功
总结:外部主机与容器直接通信,高效,但是没有隔离,网络安全性差
none
不配置网络,个别服务会有用到
容器是相对隔离
在默认桥接模式下,查看命名空间
这是一种相对隔离的方式,没有绝对的安全

自定义网络

bridge
自定义桥接网络有解析(DNS解析)



每多创建一个自定义网络+容器,都会多处一个网卡,连接着容器ip,这种方式创建的容器ip成单调递增
注意不要违背容器的隔离性
在这种模式下:
当用同一个自定义网络创建一个容器,ip为ip1然后不保存退出
创建第二个容器,ip就会是ip1,保存退出
再启动一个容器,ip就会是新的ip为ip2,相互可以ping通
删除自定义网络
docker network rm xxxx
==指定ip,gateway,subnet
- -ip只能使用在自定义网络上==


让不同网桥的容器通信

创建两个容器


给vm2加双网卡,ping通

Docker 容器通信
1.自定义网络下两个容器使用同一个网络
2.joined与其它容器共享
可以与宿主机通信



3.link链接
进入后台运行的容器

link链接之间可以共享资源


但是,一但别的服务占用此ip,在vm2端查看ip可以同步,但是变量不会同步




容器访问外网


外网访问容器
1.端口映射
2.host网络与宿主机共享端口

跨主机的容器网络


macvlan模式

两台物理机之间分别有2个网卡

eth1开机激活


打开混杂模式,开启多个子接口


在两台dokcer主机上创建macvlan网络
两台主机网络通畅



没有桥接

互通:


生产环境中网卡不够用

创建更多个子接口
docker network create -d macvlan --subnet 172.21.0.0/24 --gateway 172.21.0.1 -o parent=eth1.1 mynet2

本文详细介绍了Docker的四种网络模式:bridge、host、none和container,重点探讨了bridge模式及其默认设置。此外,还讲解了自定义网络的创建与管理,包括如何实现不同网桥容器的通信,并讨论了Docker容器间的通信方式,如自定义网络、joined、link以及容器访问外网和外网访问容器的方法。最后,文章提到了跨主机的容器网络,尤其是macvlan模式的应用,适合于生产环境中扩展网络接口。
624

被折叠的 条评论
为什么被折叠?



