docker网络_干饭大王爱学习的博客-爱代码爱编程
1.基本概述
1.1.宿主机可以ping通网络内部
1.2.每当启动容器时查看网卡我们发现(118和eth0@if119都是成对出现的)
1.3.查看宿主机的网卡(跟容器内部的118和119是成对出现的)
1.4.查看容器之间能否相互ping通(相互之间是可以相互ping通的)
容器之间的技术用的是veth技术!!!都是虚拟的接口
2.Link技术(现已淘汰,只支持正向连接,不支持方向连接)
docker run -it --name centos03 --link centos02 centos //centos03--link centos02
[root@localhost dale]# docker ps 查看正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2f20f4ec31f3 centos "/bin/bash" 10 seconds ago Up 9 seconds centos03
b10f28463eee centos "/bin/bash" About an hour ago Up About an hour centos02
--link #让centos03能够去ping通centos02
再用centos3去ping一下centos2(ping通)
再用centos2去ping一下centos3(无法ping通)
我们进入到centos03的hosts文件中查看到与centos02的IP地址是绑定在一起
我们再进入到我们的centos02中查看有没有绑定centos03的IP地址,发现是没有的
结论验证:link只支持单向绑定不支持反向绑定,即centos03--link了centos02才能ping通centos02,但是centos02不能ping通centos03
3.自定义网络
docker network create --driver bridge --subnet 192.168.1.0/24 --gateway 192.168.1.1 mynet
create #创建
bridge #模式为桥接
subnet 192.168.1.0/24 #子网
gateway 192.168.1.1 #网关
mynet #名称
创建好之后查看网卡的详细信息docker network inspect mynet
接下来创建一个容器要求自定义网络,使用我们刚才创建的mynet的网络
docker run -it --name centos01 --net mynet centos /bin/bash
- run -it #以交互模式运行
--net mynet #使用mynet的网卡
接下来查看使用docker network inspect mynet命令查看网卡的使用信息(我们看到给容器自动分配了一个192.168.1.2的IP地址)
我们使用自定义的网络可以帮我们维护较好的对应关系,推荐使用我们的自定义网络,可以较好的管理关系,使用同一种自定义网络可以相互ping通
4.示例图
实验效果:我们的目的是为了使所属于网卡docker0的容器与所属于网卡mynet的容器连通
利用docker network--help查看都有些什么参数
Connect #连接;使连通
Create #创建;创造;eg创建一个网卡
Inspect #查看;后面可以跟着网卡的名称,查看网卡的详细信息
Ls #查看都有哪些网卡
测试打通centos01和centos03
将centos03加入到mynet网卡中来:docker network connect mynet centos03
我们查看到centos03是被加入到了mynet的网卡中来,测试一下他们之间的连通性
我们称之为一容器双IP,就为了能够跨网段联通