Docker网络

测试docker容器内部网络能否ping通。

docker run -d -P --name tomcat01 tomcat            #下载tomcat测试

docker exec -it tomcat01 ip addr                         #运行并查看网络

ping 172.17.0.2                                                    #测试ping通

原理

1.我们每启动一个docker容器,docker容器都会分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的技术是evth-pair技术!所有的容器在不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用IP。




--link

docker exec it tomcat01 ping tomcat02                    #此方法ping不通。

docker run -d -P --name tomcat03 --link tomcat02 tomcat            #此方法让tomcat03和tomcat02联通。

docker exec it tomcat03 ping tomcat02                    #此方法ping现在可以通了。2ping3是不通的,每配置不能反向连接

自定义网络

好处:docker会帮我们维护好对应关系,因为容器启动ip会变化,现在可以不用ip来ping,直接通容器名称就可以ping。

redis好的:不同的集群使用不同的网络,保证集群是安全和健康的,mysql 也是如此。

网络模式

bridge:    桥接docker默认

none:    不配置网络

host:    和宿主机共享网络

container:容器网络联通(用的少,局限很大)

docker run -d -P --name tomcat01 tomcat

docker run -d -P --name tomcat01 --net bridge tomcat

#docker0特点:默认,域名不能访问 --link可以访问

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

#subnet子网最多支持65535,gateway默认路由 ,mynet名称


mynet创建成功

docker run -d -P --name tomcat01-net01 --net mynet tomcat

docker run -d -P --name tomcat01-net02 --net mynet tomcat

docker exec it tomcat01-net01 ping tomcat01-net02

网络联通:

tomcat01使用的是docker默认网络,mynet是自定义网络,此时两个网络是不能互通的,包括网络内的容器都不能互通,我们可以用打通的方式让两个网络内的容器互通。

docker network connect mynet tomcat01        #mynet和tomcat01容器联通

docker network disconnect mynet tomcat1 #删除mynet网络

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容