赞
踩
通过追踪docker0,我们解决如下两个问题:
1、创建一个 container
docker run -d --name test1 com/library/busybox /bin/sh /bin/sh -c "while true; do sleep 3600; done"
2、查看 docker 的网络情况: docker network ls
3、查看 test1 的网络是连接到那种 driver 上的: docker network inspect [ bridge 的 network_id]
输出中包含了 containers , 其中包含了 Name 为 test1 和 test2
4、查看 container的network : ip a
5、查看 test1 和test2的网络
6、验证 veth85d9927@if5 是连到了 docker0 上
安装验证工具 bridge-utils: yum install bridge-utils
使用 brctl show
interfaces 的 数值 刚好与 container test1 的对外接口 对应上
说明 container test1 的对外接口 是通过 docker0 桥接出去的
7、桥接网络图
8、容器是如何访问外网的 ?
answer:通过 NAT 技术 查询 ip tables 然后访问的
docker run -d --name test3 --network my-bridge hub.c.163.com/library/busybox /bin/sh -c "while true; do sleep 3600; done"
brctl show 或使用 docker network inspect my-bridge 查看
连接语法: docker network connect [network_name] [container_name]
docker network connect my-bridge test1
docker network inspect my-bridge 此时里面的 containers 是否包含 test1 和 test3
docker network inspect bridge 此时到container 内 也包含了 test1 和 test2
此时在 test1 容器内ping test2 和 test3 的 ip 地址是通的:docker exec -it test1 /bin/sh
此时在 test2容器内ping test3 的 ip 地址是不通的:docker exec -it test2 /bin/sh
默认使用了docker link,参考文章:Docker网络之容器间关联docker link
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。