Docker由浅入深(三)

容器间的通信

比方说,在同一个宿主机中,Docker环境中有tomcat容器和MySQL容器,我们需要建立从tomcat到MySQL的单向通信,tomcat中的应用需要从MySQL中获取数据,而MySQL不需要知道tomcat的存在

虚拟IP

每个容器都有一个虚拟IP,所有的IP都会被Docker进行管理,但是如果更换宿主机的情况下,如果容器数量过多,维护起来很不方便

容器名称

为容器命名,使用**–link**,使用容器名字进行连接,Docker会帮助我们连接两个容器

LINK单向通信
# 运行一个tomcat容器
docker run -d --name web tomcat
# 运行容器后,使用docker ps命令查看,多出一个NAMES列,显示web,web就是这个tomcat容器的名字 
# 运行一个centos容器
docker run -d --name database -it centos /bin/bash
# docker ps 找到database和web 这两个容器id 3d638fc80f73 、613099b0e9f0
# docker inspect 3d638fc80f73, 查看容器原始数据,查找网络设置选项NetworkSettings,IPAdress选项,web容器的IP地址是172.17.0.2, database容器的IP地址是172.17.0.3
# 进入web容器,ping一下172.17.0.3 看看是否ping通,
# docker exec -it 613099b0e9f0 /bin/bash
# root@613099b0e9f0: /usr/local/tomcat# ping 172.17.0.3,发现可以ping通,说明天然情况下,容器是互通的
# 换一个方式,ping database, 发现是不通的,因为web容器不知道database
# exit 退出web容器
# docker ps, web容器的容器id是 3d638fc80f73
# 使用docker rm -f 3d638fc80f73 移除web容器

# docker run -d --name web --link database tomcat
# 重新使用交互式命令进入web容器,ping database容器,发现ping通了
# 至此,使用--link参数容器单向通信完成

Bridge 网桥双向通信
网桥
概念

虚拟的网络桥接,是Docker容器和外界通信不可缺少的完全虚拟的组件

Docker环境 <–>bridge网桥<–>物理网卡<–>浏览器

功能

1.与外界环境通信

2.对容器网络层面进行分组(将指定的容器绑定到同一个网桥上,这些容器天然的互通)

# 创建web容器 和数据库容器
docker run -d --name web tomcat
docker run -d --name database -it centos /bin/bash
# 列出当前docker 网络服务的明细
docker network ls
# 关注一下bridge网桥
NETWORKID   NAME    DRIVER   SCOPE
7479b3a16cdb  bridge  bridge   local 
# 创建一个新的网桥,在未来让新的容器都使用这个网桥,实现互联互通
docker network create -d bridge my-bridge
# 使用 docker network ls 查看NAME中出现新的网桥my-bridge
# 如何让容器绑定到网桥呢,使用命令 docker network connect [网桥] 容器名称
docker network connect my-bridge web
docker network connect my-bridge database


网桥的实现原理

创建网桥的时候,实际上是Docker容器创建了一个虚拟网卡(网关),172.17.0.1,容器内部通信先经过网关的转发,容器向外界的通信,需要借助宿主机的物理网卡;外界的访问同样需要物理网卡的转换,再到虚拟网卡的分发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值