Docker容器间的网络通信
来源:互联网 发布:手机能做淘宝链接 编辑:程序博客网 时间:2024/06/06 03:30
Docker Network
简单记录下容器间的网络通信。
- Docker Network
- 网络驱动
- BRIDGE
- 容器与外部的网络通信前提
- 宿主机与容器的端口映射
- 容器间的网络通信
- 使用自己创建的NETWORK
- 不同NETWORK间的容器通信
- 容器DNS
- 默认bridge网络
- 用户创建的bridge网络
- 网络层可见别名
- 参考
网络驱动
- network drivers是docker提供容器间网络通信的基础。docker默认提供了两中驱动:bridge和overlay
docker network ls
指令会列出当前存在的网络- docker在安装完成后会自动创建三个网络
BRIDGE
宿主机中使用
ip addr show
查看网卡状况
docker0为宿主机中的虚拟网桥即为docker自动创建的bridge网络
bridge为docker运行容器(
docker run
)默认使用的网络
容器与外部的网络通信前提
- 保证宿主机开启了ip_forward功能
- 保证iptables的相关策略的设置,如地址伪装,NAT等
宿主机与容器的端口映射
docker run -itd -P --name mongoService mongo
,-P表示:容器暴露的端口将会映射到宿主机中的随机端口号,随机范围见:/proc/sys/net/ipv4/ip_local_port_range每当启动容器与外部网络的通信,docker都会建立响应的iptables规则。
iptables -L -n -t nat
查看规则
容器间的网络通信
容器间可以通过IP或容器名进行网络通信
使用自己创建的NETWORK
创建my_bridge网络:
docker network create -d bridge --subnet=10.0.0.0/24 my_bridge
运行使用my_bridge网络的容器
docker run -itd --network=my_bridge --ip=10.0.0.254 --name db busybox
不同NETWORK间的容器通信
docker run -itd --name=web busybox
,使用默认的bridge network- 将当前容器加入到需要与之通信的网络
docker network connect my_bridge web
- 网络结构
容器DNS
容器间如何通过别名进行网络通信?
默认bridge网络
-- 创建测试容器 docker run -itd --name c1 busybox docker run -itd --name c2 busybox -- 进入容器c1内部 docker attach c1 / # ping c2 ping: bad address 'c2' -- 创建容器时指定link容器 docker run -itd --link c2:c2_alias --name c3 busybox -- 进入容器c3内部 docker attach c3 / # ping -w1 c2 PING c2 (172.17.0.4): 56 data bytes 64 bytes from 172.17.0.4: seq=0 ttl=64 time=0.083 ms / # ping -w1 c2_alias PING c2_alias (172.17.0.4): 56 data bytes 64 bytes from 172.17.0.4: seq=0 ttl=64 time=0.096 ms / # cat /etc/hosts #(容器别名相互耦合) 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.4 c2_alias 7e4850ad6320 c2 #通信原因 172.17.0.6 fe51353cb1e3 -- 进入容器c2内部 docker attach c2 / # ping c3 ping: bad address 'c3'
用户创建的bridge网络
-- 创建测试容器 docker run -itd --name c4 --net=my_bridge busybox docker run -itd --name c5 --net=my_bridge busybox -- 进入容器c4内部 docker attach c4 / # ping -w1 c5 #(自动创建DNS服务) PING c5 (10.0.0.3): 56 data bytes 64 bytes from 10.0.0.3: seq=0 ttl=64 time=0.066 ms
网络层可见别名
-- 创建测试容器 docker run -itd --name c7 --net=my_bridge --network-alias c7_net_alias busybox -- 进入容器c4内部 docker attach c4 / # ping -w1 c7_net_alias PING c7_net_alias (10.0.0.5): 56 data bytes 64 bytes from 10.0.0.5: seq=0 ttl=64 time=0.205 ms
参考
Docker v17.09
阅读全文
2 0
- 75.[Docker]容器间的网络通信
- Docker容器间的网络通信
- docker容器间网络通信
- Docker容器学习梳理--容器间网络通信设置
- docker容器网络通信原理分析
- docker容器网络通信原理分析
- docker容器网络通信原理分析
- docker容器网络通信原理分析
- Docker网络基础---Docker跨主机容器访问通信
- Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)
- docker容器的网络连接
- Docker容器的网络链接
- 【docker】docker容器的网络基础
- 不同主机间的 Docker 容器相互通信
- docker应用-5(使用overlay 网络进行容器间跨物理主机通信)
- docker应用-5(使用overlay 网络进行容器间跨物理主机通信)
- Docker网络管理及容器跨主机通信(四)
- Docker网络管理及容器跨主机通信
- 洛谷10月月赛R1·浴谷八连测R1·提高组 T3
- BZOJ1503: [NOI2004]郁闷的出纳员
- pandas基本操作,小锦囊一个
- JavaScript02-页面布局
- python绘制神经网络中的Sigmoid和Tanh激活函数图像(附代码)
- Docker容器间的网络通信
- 原生JS添加节点方法与jQuery添加节点方法的比较及总结
- HashCode和equals方法如何决定对象能否存入Hash容器中
- xamarin学习笔记A13(安卓Handler异步消息处理)
- 乌班图下安装maven
- Redis主从复制
- 数据分析入门书籍,你看过几本
- Python画散点图(Knn中数据)
- 装饰者模式