Docker 网络
- 为了通信
- 为了容器互联
启动docker 查看网络
发现多出来一个docker0 【172.17.0.1】
常用命令
[root@tianqinglong101 test]# docker network ls # 查看网络
NETWORK ID NAME DRIVER SCOPE
38358913a9b3 bridge bridge local (常用) 默认docker0
71409d332a99 host host local (常用)
ab17295eb09a none null local
docker network create aa_network #创建一个网络
docker network ls # 发现多了一个aa_network 默认 bridge 模式
docker network rm aa_network #删除一个网络
启动ubuntu --name u1 --name u2
docker inspect u1 |tail -n 20 # 查看信息 ipaddress 172.17.0.2
docker inspect u2 |tail -n 20 # 查看信息 ipaddress 172.17.0.3
docker rm -f u2
启动ubuntu --name u3
docker inspect u3 |tail -n 20 # 查看信息 ipaddress 172.17.0.3
# 结论 : docker容器内部的up地址是会变动的
bridge
- 两两匹配
docker network inspect bridge # 查看详细网络信息
案例说明
docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-jdk8
docker ps
docker exec -it tomcat81 bash
ip addr
验证
host
案例
docker run -d -p 8083:8080 --network host --name tomcat83 billygoo/tomcat8-jdk8 # 警告
docker run -d --network host --name tomcat83 billygoo/tomcat8-jdk8 #正确 不需要端口号映射 因为和宿主机用的同一份网络
没有端口如何看到tomcat猫
直接 ip:8080
none
- 很少用 做个了解即可
- 只有一个lo 网络
docker run -d -p 8084:8084 --network none --name tomcat84 billygoo/tomcat8-jdk8
container
- 公用同一个网桥
8086用8085的 运行第二句 会有个坑 端口冲突 不能用tomcat 但使用就是这么使用~
如果8085关闭了 8086的网络也没了
自定义网络
docker link 过时了~
之前
docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-jdk8
docker ps
docker exec -it tomcat81 bash
docker exec -it tomcat82 bash
# tomcat81
ip addr
172.17.0.2
# tomcat82
ip addr
172.17.0.3
# tomcat81
ping 172.17.0.3 可以
# tomcat82
ping 172.17.0.2 可以
服务名ping通呢? 不可以
# tomcat81
ping tomcat81 不可以
# tomcat82
ping tomcat81 不可以
之后
# 自定义网络使用的是 bridge
docker network create zzyy_network # 创建一个网络
docker run -d -p 8081:8080 --network zzyy_network --name tomcat81 billygoo/tomcat8-jdk8# 新建容器加入新建的自定义网络
docker run -d -p 8082:8080 --network zzyy_network --name tomcat82 billygoo/tomcat8-jdk8# 新建容器加入新建的自定义网络
docker exec -it tomcat81 bash
docker exec -it tomcat82 bash
此时ping 服务名
ping tomcat82 # 互相能ping通 域名和ip都能ping通