docker网络
还是补充,哈哈
如何干掉当前所有运行中的容器
docker rm -f $(docker ps -aq)
网络基础
输入命令:
ip addr
你的docker有容器在运行时是七八个网卡信息
当把所有docker容器干掉之后,再输入命令查看网卡信息
发现只剩下五个网卡信息了
结论:每运行一个容器都会生成一个网卡
明天继续
–link
不需要用ip直接用容器名(服务名)ping
docker exec -it tomcat02 ping tomcat01
上面的无法ping通!
docker run -d -P --name tomcat03 --link tomcat02 tomcat
docker exec -it tomcat03 ping tomcat02
此时就可以ping同通
原理:
docker exec -it tomcat03 cat /etc/hosts
总结:
–-link就是在hosts配置中增加一个映射
Docker基于bridge网络实现互通
查看docker中的网络信息(docker默认的网络连接三种方式)
docker network ls
bridge:桥接模式(默认)
none:不配置网络
host:和宿主机共享网络
container:容器网络连通(用的少,局限大)
bridge桥接容器:
docker run -itd --name host1 --net bridge busybox
docker0特点:默认,域名不能访问,--link可以打通
自定义一个网络:
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
解释:docker network create 桥接的网络模式 子网 网关 名称
运行一个容器:
docker run -d -P --name host03 --net mynet host01
测试是否可以ping通(可以)
docker exec -it host03 ping host01
网络连通
docker exec -it conect mynet host01
不同网络下的容器也能相互连通,host01是其他网络下的容器
Docker底层实现和网络实现
Docker 底层的核心技术包括 Linux 上的名字空间(Namespaces)、控制组(Control groups)、Union 文
件系统(Union file systems)和容器格式(Container format)。
Docker 的网络实现其实就是利用了 Linux 上的网络名字空间和虚拟网络设备(特别是 veth pair)。
一张图解释: