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)。
一张图解释:

posted @ 2022-01-04 22:49  rookiexwang  阅读(32)  评论(0编辑  收藏  举报