理解Docker 0
我们每启动一个docker容器,docker就会给容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的是evth-pair技术,在这里,docker0充当的是路由(网关)

–link(不推荐)
思考一个场景,docker中mysql只要重启,ip就会变更,怎么通过名字来访问容器
root@test:~# docker exec -it tomcat02 ping tomcat01 ping: tomcat01: Name or service not known 只需要加上--link,就可以通 root@test:~# docker run -d -P --name tomcat03 --link tomcat02 tomcat root@test:~# docker exec -it tomcat03 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.079 ms 64 bytes from tomcat02 (172.17.0.3): icmp_seq=2 ttl=64 time=0.052 ms 但是这样,只能3ping通2;2是无法ping通3的 原理是在tomcat03添加了本地解析 root@test:~# docker exec -it tomcat03 cat /etc/hosts 172.17.0.3 tomcat02 138c21225ee3 172.17.0.4 32a22e114083 现在不推荐使用--link,推荐使用自定义网络,不使用docker0
自定义网络
# docker network ls
查看所有docker网络
网络模式
bridge:桥接docker默认
none:不配置网络
host:和宿主机共享网络
container:容器网络连通(用得少)
测试
创建网络 # docker network create --driver bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 mynet --driver:类型 --subnet:子网掩码 --gateway:网关 测试连接 # docker run -d -P --name tomcat --net mynet tomcat root@test:~# docker exec -it tomcat ping tomcat01 PING tomcat01 (192.168.0.3) 56(84) bytes of data. 64 bytes from tomcat01.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.067 ms root@test:~# docker exec -it tomcat ping 192.168.0.3 PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data. 64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.061 ms 现在不需要--link也能够ping通
容器之间网络连通
docker network connect

测试
# 将tomcat-01连通到mynet docker network connect mynet tomcat-01