能干嘛?
- 容器间的互联和通信以及端口映射。
- 容器IP变动时候可以通过服务名直接网络通信而不受到影响。
docker不启动,默认网络情况
使用ifconfig查看,发现 ens33 lo virbr0
docker启动后,网络情况
使用ifconfig查看,会产生一个名为 docker0 的虚拟网桥。
若想使用docker查看网络模式 ,我们需开启docker,systemctl start docker
使用命令 docker network ls后,发现有三个模式,bridge、host、none。
网络模式总体介绍
- bridge模式:使用--network bridge指定,默认使用docker0
- host模式:使用--network host指定
- none模式:使用--network none指定
- container模式:使用--network container:NAME或者容器ID指定
- 自定义网络模式
在此之前,需掌握如下常用基本命令:
- 查看网络 docker network ls
- 查看网络源数据 docker inspect xxx网络名,比如 docker inspect bridge
- 删除网络 docker network rm xxx网络名
- 创建网络 docker network 自定义网络名
- 使用默认的网络模式
如果没有 billygoo/tomcat8-jdk8这个镜像会自动pull。
创建俩个tomcat容器
docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-jdk8
上述成功启动并用docker exec进入各自容器实例内部,查看IP地址 ip addr
按照IP地址ping是OK的 按照服务名ping结果??? 不行!!!
- 自定义桥接网络,自定义网络默认使用的是桥接网络bridge
新建自定义网络 docker network create xxx
新建容器加入上一步新建的自定义网络
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
按照IP地址ping是OK的 按照服务名ping结果??? 靠!就很棒!
问题结论:自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)
加油!!!