8、docker原生网络
Docker原生网络基于Linux桥接技术和虚拟网络接口,使用了Linux内核的网络功能。每个Docker容器都有自己的网络命名空间,这使得容器之间可以使用独立的IP地址,并隔离了容器的网络栈。
当创建一个Docker原生网络时,Docker会在主机上创建一个Linux网桥(bridge),并将所有连接到该网络的容器连接到这个网桥上。每个容器都会分配一个唯一的IP地址,并可以通过该IP地址进行通信。此外,Docker还会为每个容器分配一个唯一的MAC地址,并通过一个虚拟网桥与主机网络相连。
Docker原生网络可以使用不同的网络驱动程序,包括bridge、host、overlay等,以适应不同的场景需求。桥接网络(bridge network)是最常用的一种,它使得容器可以通过桥接连接到主机网络和其他容器。
查看原生网络
由于所有的容器都要桥接到docker0上,所以所有容器的数据包都要通过docker0向外发送,当容器数据包想要通过docker0对外发送时,要从eth0接口上走,因此内核的IP服务必须打开。
理解为一根网线,一头连接容器,一头连接本机
桥接模式可以允许数据包对外发送,但不可以外部主机直接访问
想让外部主机访问需要使用host网络模式(容器和宿主机共享同一网格线,不会新建虚拟网卡)
host网络模式,容器和宿主机共享一个网络栈,容器并没有创建新的虚拟网卡,同宿主机公用,因此其他主机想访问容器时,只需要访问它的接口地址就行
在server2上
注:当再运行一个容器时就会发生冲突
禁用网络模型
以上是三种原生网络
自定义网络
自定义网络地址段
当创建多个容器时,可以将它们连接到同一个Docker原生网络中,这样它们就可以通过IP地址进行互相访问。每个容器都会分配一个唯一的IP地址,并可以通过该IP地址进行通信。Docker会为每个容器自动添加DNS记录,以便容器名称之间的互相解析。所以多容器之间的互访是通过dns来进行访问,自定义网络内嵌了dns。
不同网络之间被隔离,默认不能通信;不同网络之间通信需要附加虚拟网卡。
再添加个虚拟网卡连接到不同的网段
9、docker容器通信
joined容器(两个容器共享一个网络栈)
在共享一个网络栈后,端口资源是唯一的
端口映射
双冗余机制
跨主机容器通信
两台虚拟机都各添加一块虚拟网卡,并重启
开启混杂模式并激活
server2上操作以此类推
要保证底层链路的正确,直接使用物理网卡,在创建macvlan的时候没有使用新建接口,不需要创建新的虚拟接口,直接使用eth1,也就是物理接口。
10、docker数据卷
在宿主机上修改数据相当于直接修改容器内的数据,因为当前宿主机的容器被直接挂载到容器内
清理所有数据卷,在清理前需要先删除容器,释放对数据卷的占用
创造数据卷
使用bind mount方式挂载数据卷
同时,在挂载时可以控制权限
共享卷