Docker系列(网络)

204 阅读2分钟

Docker网络

理解docker0

测试

image-20210311191645936

三个网络

# 问题 docker 是如何处理网络的
# 测试


# 查看容器的网络情况 ip addr
# 启动Tomcat 
[root@VM-0-11-centos tomcat]# docker run -d -P --name tomcat01 tomcat


# eth0@if81 是docker 分配的ip地址
[root@VM-0-11-centos tomcat]# docker exec -it tomcat01 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
80: eth0@if81: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

# 思考 linux 能否ping通容器内部

linux可以ping通docker容器内部

image-20210311192421959

原理

1、每启动一个docker 容器 就会分配一个ip

2、只要安装docker 就会安装网卡docker0 桥接模式 evth-pair 技术

再次测试ip addr

image-20210311194324217

再启动一个新的tomcat 再次ip addr 发现又出现新的

image-20210311194450086

我们发现容器带来的网卡都是一对一对
evth-pair 就是一对虚拟设备接口 他们都是成对出现 一段连着协议 一段彼此相连
evth-pair 充当桥梁 连接各种虚拟网络设备

3、我们来测试tomcat01和tomcat02是否可以ping通?

可以ping通 容器容器之间可以通信

结论

image-20210311200309357

结论: tomcat01 和tomcat02是公用的一个路由器, docker0

所有的容器不指定网络的情况下,都是docker0 路由的, docker会给我们的容器分配一个默认的可用IP

image-20210311201312669

--link

单纯的使用tomcat01通过文件名称 无法直接ping通  
使用--link 新启动一个tomcat03 完成关联 就可以直接通过名称ping通

image-20210311202146548

注意:反向ping 无法通 需要特殊配置