1、所有容器不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用ip。
2、Docker使用的是Linux的桥接,宿主机是一个Docker容器的网桥docker0。
3、--link
# 运行一个tomcat01 --link tomcat02
docker run -d -P --name tomcat01 --link tomcat02 tomcat
# 用tomcat01 ping tomcat02的容器名 可以ping通
$ docker exec -it tomcat01 ping tomcat02
PING tomcat02 (172.17.0.3) 56 (84) bytes of data.64 bytes from tomcat02 (172.17.0.3): icmp_seq = 1 ttl = 64 time = 0 .115 ms64 bytes from tomcat02 (172.17.0.3): icmp_seq = 2 ttl = 64 time = 0 .080 ms# 用tomcat02 ping tomcat01 ping不通# --link的本质就是在tomcat01的hosts配置中添加了tomcat01的映射# 现在Docker已经不再建议使用--link了,推荐使用自定义网络
4、自定义网络
# docker0的特点:默认的网络,创建的容器不能使用容器名直接访问。--link可以打通连接,但是很麻烦。
# 自定义网络命令
$ docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
# 192.168.0.0/16 16的含义是前16位固定
# 自定义网络下,服务可以用服务名相互ping通,不需要--link
5、网络连通
众所周知,一般情况下想要跨网段ping通是不太可能的。如果想要跨网络操作,需要使用docker network connect "容器名" "网络名"命令。
例子:
docker network connect tomcat01 mynet
#将tomcat01连接到mynet网络
原理:
给tomcat01分配一个mynet网段的ip,使其同时拥有两个网段的ip。
本文含有隐藏内容,请 开通VIP 后查看