Docker容器技术:容器之间的关系-Link

222 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情

容器之间的关系-Link

这里主要介绍容器间的link关系。

1. 实际需求

之前我们用buszybox创建了两个container容器,现在当我们有一种 需求:

我们有一个后台代码,需要访问数据库,这时候需要数据库的端口和URL地址,此时我们有两个容器,一个容器起的是后台服务,还有一个容器起的是数据库服务,后台服务需要访问数据库,所以他应该需要知道数据库的端口和访问地址。

所以我们需要先创建一个数据库容器,此时通过ip命令可以获知IP地址,然后起后台服务的时候把这个数据库地址作为参数传入后台容器,这个就有一个问题,就是说我们写代码时候就不清楚具体传入的数据库地址是什么。

但是我们可以通过一种方式给数据库容器起一个名字(也就是给IP地址起一个名字),通过这个名字就可以访问数据库,不需要知道IP地址了,保证名字不变就行了。

这时候就需要link机制,创建第二个容器可以link到第一个容器,这时候访问第一个容器通过name就可以访问了

2. 实践

我们首先把test2容器删除:

然后重新run 这个容器,不过要新增一个--link test1参数:

然后我们可以进入容器中:

sudo docker exec -it test2 /bin/sh

我们发现此时直接ping test1这个名字也是可以ping通的,这是因为我们通过link给test2添加了dns的记录,这时候其实就记录了test1的ip地址,然后通过名字可以直接访问。

这样假设数据库服务在3306端口,我们就可以直接访问:

然后我们去test1可以这样ping test2吗?其实是不行的,link是有方向的:

其实这种link机制真正用的不多,后面会说再部署有数据库和后台还有其他更方便的方式进行。