【Dokcer】docker的网络模式

时间:2022-11-05 15:00:26

Docker的四种网络模式:


  1. bridge(默认网络)
  2. host
  3. none
  4. container
  5. 自定义网络

【Dokcer】docker的网络模式

一、bridge模式

bridge网络模式是docker的默认网络模式

当docker进程启动的时候,会在主机上自动创建一个名为docker0的虚拟网桥

【Dokcer】docker的网络模式

【Dokcer】docker的网络模式

同时docker0也是所有容器的默认网关;在主机上创建⼀对虚拟⽹卡 veth pair 设备,Docker 将 veth pair 设备的⼀端放

在新创建的容器中,并命名为 eth0 (容器的⽹卡),另⼀端放在主机中,以 vethxxx 这样类似的名 字命名,并将这个⽹络设备加⼊到 docker0 ⽹桥中。可以通过 brctl show 命令查看。


容器互联


创建两个容器测试

test1 容器

IP为 172.17.0.4

【Dokcer】docker的网络模式


test2 容器

IP为 172.17.0.5

【Dokcer】docker的网络模式

结论:互ping 可以通信



问题:ping IP可以,如果ping 容器名呢??

【Dokcer】docker的网络模式

【Dokcer】docker的网络模式

结果发现,不管是哪边ping容器名,都无法ping同

想要ping同,需要在创建的时候加上 

--link

 参数

注意!--link 只能单向ping 同,也就是说,只能test1 ping test2



二、host模式

使用host模式,容器的网卡会和主机网卡共享IP地址

【Dokcer】docker的网络模式

docker run -dit --name test3 --net=host busybox

# --net=host 指定网络模式

容器IP

【Dokcer】docker的网络模式

主机IP

【Dokcer】docker的网络模式

结论:二者的IP信息完全一样,共享IP


三、none模式

none即空,即容器没有网络,没有网卡信息

【Dokcer】docker的网络模式


四、container模式

和某个容器共享IP

docker run -dit --name test6 --net=container:test5 busybox

# 创建一个test6容器,IP和test5保持共享

test5

【Dokcer】docker的网络模式

test6

【Dokcer】docker的网络模式

容器之间通过lo网卡互通


五、自定义模式

一般都是自定义 bridge模式

自定义bridge模式和bridge模式最大不同点

自定义bridge模式无需通过

--link

实现容器名互通

创建出来的自定义bridge模式直接互通


测试

创建两个自定义bridge模式的容器

1、创建自定义网络

2、创建容器,加入自定义的网络

3、ping容器名测试

## 1、创建自定义 bridge 网络模式
docker network create -d bridge demo

## 2、创建容器test1,test2
docker run -dit --name test1 --net=demo busybox
docker run -dit --name test2 --net=demo busybox

## 3、进入容器测试

【Dokcer】docker的网络模式