文章目录
前言
一、Docker的原生网络模式
1.brideg网络模型
bridge模式下容器没有一个公有ip,只有宿主机可以直接访问,外部主机是不可见的。通过将其他的容器网络模式,因为没有公网ip所以可以直接使用源质转换进行数据的互通方式
启动容器后即可看到为bridge模式使用默认的网桥进行桥接外部主机无法访问
2.host网络模型
host模式可以让容器共享宿主机网络栈,这样的好处是外部主机与容器直接通信,但是容器的网络缺少隔离性。
docker run -it --rm --name rhel7 --network host rhel7 bash
3.none网络模型
none模式是指禁用网络功能,只有lo接口,在容器创建时使用
docker run -it --rm --name rhel7 --network none rhel7 bash
二、自定义网络的使用方式
1.bridge模式
bridge驱动类似默认的bridge网络模式,将数据桥接到另一个容器上
docker network create -d bridge nework3 #-d指定驱动模式
docker network create --subnet 172.10.0.0/24 --gateway 172.10.0.1 network #--subnet表示指定网段--gateway表示指定网关一般为第一个
三、容器之间的通信
1.dns解析功能定义
docker run -it --name rhel --network network --ip 172.10.0.3 rhel7 bash #--ip指定容器的ip,--name可以知指定容器的名称以及容器的内嵌的dns解析名称
2.Joined模式
处于这个模式下的 Docker 容器会共享一个网络栈,这样两个容器之间可以使用localhost高效快速通信。即容器和容器之间进行网络的共享
docker run -it --rm --network container:demo --name demo1 ubuntu
四、跨主机之间的容器通信
1.macvlan网络结构
特点:没有新建linux bridge
容器的接口直接与主机网卡连接,无需NAT或端口映射。
macvlan会独占主机网卡,但可以使用vlan子接口实现多macvlan网络
vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan id取值为1~4094。
ip link set eth1 promisc on #打开网卡的混杂模式否则会在创建时开始报错
ip link set eth1 up #假设为新加的网卡则需要开启网卡才能生效否则无法生效
docker network create -d macvlan --subnet 172.20.0.0/24 --gateway 172.20.0.1 -o parent=eth1 network #指定网络模式为macvlan即可
docker run --rm -it --name demo --network network --ip 172.15.0.100 busybox #交互式开启容器即可