文章目录
1、容器与宿主机之间
在宿主机上安装好docker 服务后,会默认安装一个虚拟网卡docker0

这里docker0的ip范围是在172.17.0.1到172.17.0.255之间(172.17.0.1和172.17.0.255不可取)
启动一个centos的容器查看网络信息
docker run -it -d centos /bin/bash

进入容器内查看网络信息

容器的ip与宿主机docker0网卡ip是在同一网段上(ip与子网掩码按位与运算),这是因为启动一个容器是如果不指定网络就会使用默认的docker0
通过docker network ls查看docker所有的网络

启动容器是默认会使用这个名为bridge的网络,docker network inspect bridge查看具体信息

宿主机和容器是能相互ping通的
2、容器与容器之间
那如果再启动一个容器,容器与容器之间能ping通吗?

centos02容器的网络信息

centos01的ip是172.17.0.2,centos02的ip是172.17.0.3 那么他们能ping通吗?

答案是可以的,因为两个容器默认使用的都是bridge网络(docker0网卡),分配的ip都是在同一网段。但是docker容器之间不是隔离的吗 如何实现隔离。就需要用到自定义网络
3、自定义网络
前面说到启动一个容器会默认使用bridge网络,如何自定义一个网络并使用?
docker network 命令

简单自定义一个网络 指定子网和网关

查看centos网络详细信息

在宿主机自定义一个网络,其实就是增加一个网卡信息

两个容器使用同一个网络
接下来启动两个centos容器使用同一个自定义网络

通过参数--network 网络名指定容器使用的网络
查看cnetos01和centos02的网络信息

有人可能会有疑问:自定义得网络子网是 192.168.24.0/16 而两个容器的ip是192.168.0.1和2,这好像也不在同一个网段上,关于两个ip是否在同一网段上这点请自行解决

两个容器使用两个个网络
自定义两个网络centos01和centos02

启动两个centos容器分别使用不通的容器

查看centos01的网络信息

查看centos02的网络信息

这两个ip使用的不同的网络,不是在同一个网段上,所以两个容器是不能ping通的。
那么如何让两个隔离的容器能相互ping通?
使用docker network connect 命令将容器连接到网络

docker network connect centos01 centos02:可能有点晕,解释:将容器centos02连接到网络centos01中,这样容器centos02既连接到了网络centos01,也连接到了centos02中。
docker network connect 网络 容器
查看网络centos01信息:网络centos01中新增了centos02容器

进入centos02中查看网络信息:新增一个网卡信息

结果:容器centos02有两个网卡信息,因为它使用了两个自定义的网络
图解:










