『中级篇』 容器之间的Link(27)

栏目: 编程工具 · 发布时间: 6年前

内容简介:原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!原文链接地址:上次介绍了默认的网络Bridge,连接到docker0之后还可以跟外界进行通信,查看docker之间的关系link。上节生成了test1和test2,test1和test2之前可以通过ip地址的房还是进行通信的。

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!

原文链接地址: 『中级篇』 容器之间的Link(27)

上次介绍了默认的网络Bridge,连接到 docker 0之后还可以跟外界进行通信,查看docker之间的关系link。上节生成了test1和test2,test1和test2之前可以通过ip地址的房还是进行通信的。

场景

如果创建2个容器,一个 mysql 容器,一个tomcat容器,tomcat容器内后台应用,需要访问mysql数据库容器,按照上节的原理,我需要先进入mysql的容器中查看mysql的ip地址,然后在在tomcat容器的应用中修改程序里面的数据库连接地址才可以完成应用的连接。这样是不是很麻烦。 其实还有一种link的方式可以让应用通信变的简单

  • 启动test1 和test2
sudo docker ps
复制代码

『中级篇』 容器之间的Link(27)

  • 停止test2,删除test2
sudo docker stop test2
sudo docker rm test2
sudo docker ps
复制代码
『中级篇』 容器之间的Link(27)

image.png

  • 加入link创建test2
sudo docker run -d --name test2 --link test1 busybox /bin/sh -c "while true; do sleep 3600; done"
sudo docker ps
sudo docker exec -it test2 /bin/sh
#ping test1
ping 172.17.0.2
ping test1
复制代码

通过link test1 也就是直接把test1 告诉给test2的ip地址,直接可以通过test1的容器名字,直接找test1

『中级篇』 容器之间的Link(27)

『中级篇』 容器之间的Link(27)

  • 反过来我在test1里面直接ping test2咱们试试
sudo docker exec -it test1 /bin/sh
ping test2
复制代码

『中级篇』 容器之间的Link(27)

上节课通过docker network ls 可以看到一个bridge host none

我们自己创建一个bridge,让容器直接绑定新的bridge

『中级篇』 容器之间的Link(27)

sudo docker network create -d bridge mybridge 
sudo docker network ls
brctl show
复制代码

『中级篇』 容器之间的Link(27)

『中级篇』 容器之间的Link(27)

image.png

#新建test3 连接新的mybridge
sudo docker run -d --name test3 --network mybridge busybox /bin/sh -c "while true; do sleep 3600; done"
#查看新的mybridge上有新的接口了
brctl show
复制代码

『中级篇』 容器之间的Link(27)

『中级篇』 容器之间的Link(27)

#查看下新的mybridage它的网络
sudo docker network inspect mybridge
复制代码

之前都是172.17 这里的是172.18

『中级篇』 容器之间的Link(27)

问题来了,一个17,一个18网段如何让17网段的容器 可以连接在新的18网段上呢

sudo docker network 
sudo docker network connect
复制代码

『中级篇』 容器之间的Link(27)

#我们让连接到mybridage这个network上
 sudo docker network connect mybridge test2
 sudo docker network inspect mybridge
复制代码
『中级篇』 容器之间的Link(27)

image.png

我们在test3上尝试ping下test2 看能否ping通

sudo docker exec -it test3 /bin/sh
#ping test2的ip地址
ping 172.18.0.3
#ping test2
ping test2
复制代码

『中级篇』 容器之间的Link(27)

是不是有点神奇,按照常理我不通过link不可以通过名称直接ping通test2,而这里我们成功的ping通了test2,这是为什么呢?我们test2和test3因为都连接了用户自己创建的bridge上,这2个默认就是连接好的,可以直接通过名称。咱们在试试通过test2来ping test3试试.

sudo docker exec -it test2 /bin/sh
ip a
ping test3
#ping test1,是可以ping通的 因为之前咱们已经link上去了,如果不link根本是ping不通的。如果ping不通 也可以通过 sudo docker network connect mybridge test1 的方式来ping
ping test1
复制代码

『中级篇』 容器之间的Link(27)

『中级篇』 容器之间的Link(27)

PS:用户自定义的bridge 和 docker0 这个bridge他们之前的区别,docker0 如果通过名称想找到需要通过link,实际的项目中很少使用link,其实让大家知道link这个命令。

『中级篇』 容器之间的Link(27)


以上所述就是小编给大家介绍的《『中级篇』 容器之间的Link(27)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据密集型应用系统设计

数据密集型应用系统设计

Martin Kleppmann / 赵军平、李三平、吕云松、耿煜 / 中国电力出版社 / 2018-9-1 / 128

全书分为三大部分: 第一部分,主要讨论有关增强数据密集型应用系统所需的若干基本原则。首先开篇第1章即瞄准目标:可靠性、可扩展性与可维护性,如何认识这些问题以及如何达成目标。第2章我们比较了多种不同的数据模型和查询语言,讨论各自的适用场景。接下来第3章主要针对存储引擎,即数据库是如何安排磁盘结构从而提高检索效率。第4章转向数据编码(序列化)方面,包括常见模式的演化历程。 第二部分,我们将......一起来看看 《数据密集型应用系统设计》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器