1.1 网络命名空间 (Network Namespace)
每个容器通常都有自己的网络命名空间,这是Linux内核提供的隔离机制,使得每个容器可以有自己的网络接口、IP地址和路由表等。宿主机和容器之间的通信通常通过以下几种方式实现:
- Bridge模式: 在Bridge模式下,容器的网络接口(veth pair)连接到宿主机上的一个虚拟桥接器(bridge)。这个桥接器可以看作一个虚拟交换机,连接容器的所有网络接口,同时也连接到宿主机的物理网络接口。通过这个桥接器,容器可以和宿主机、其他容器以及外部网络进行通信。
- Host模式: 在Host模式下,容器直接使用宿主机的网络命名空间,也就是说,容器和宿主机共享相同的网络接口、IP地址和路由表。这样,容器和宿主机之间的通信就像是在同一台机器上的两个进程之间的通信一样,效率较高,但缺少隔离性。
- None模式:容器没有网络接口,完全隔离,没有网络连接。
- Container模式:容器共享另一个容器的网络命名空间,多个容器可以共享同一个网络堆栈。适用场景:微服务架构--多个紧密耦合的微服务可以使用 Container 模式,以减少网络配置复杂性和提高性能;应用程序组合--当多个应用程序组件(如 Web 服务器和应用服务器)必须协同工作时,Container 模式能让它们无缝共享网络资源。
- Overlay模式: Overlay网络是一种跨主机的网络模式,通常用于容器集群中。容器的网络接口连接到一个虚拟隧道(VXLAN或IPsec)上,这些隧道将容器连接到跨多台宿主机的虚拟网络中。宿主机之间的通信通过这些隧道实现,而容器和宿主机之间的通信通过宿主机的网络接口进行。
1.2 具体操作:
-
Bridge模式 :
image.png
1.创建bridge网络,自定义网络, 可以指定子网、IP地址范围、网关等网络配置
image.png
-
查看docker网络
image.png
3.查看详细信息
image.png
4.使用指定网路创建容器
image.png
-
Host模式 :
image.png
1.创建host网络的容器
image.png
2.测试
image.png
-
container模式
1.创建container网络的容器
docker run --name=busybox_container --net=container:nginx_bridge -td busybox
2.查看容器ip
image.png
3.两个容器使用同一个ip,同一张网卡
# 通过ifconfig查询ip
$ docker exec busybox_container ifconfig
image.png
网友评论