博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
13、容器之间的link
阅读量:4452 次
发布时间:2019-06-07

本文共 2344 字,大约阅读时间需要 7 分钟。

  很多时候我们的业务分为前台和后台,例如:“前台的代码需要连接数据库进行数据操作”;但是在写代码的时候我们并不知道后台数据库的地址是什么,所以我们可以docker通过固定的名字来访问。

  之前我们已经有两个container,test1和test2,他们之间通过IP可以互相访问,但是不能够通过容器名来互联:

[root@docker ~]# docker exec -it test2 /bin/sh/ # ping 172.17.0.3PING 172.17.0.3 (172.17.0.3): 56 data bytes64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.128 ms64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.076 ms64 bytes from 172.17.0.3: seq=2 ttl=64 time=0.089 ms^C--- 172.17.0.3 ping statistics ---3 packets transmitted, 3 packets received, 0% packet lossround-trip min/avg/max = 0.076/0.097/0.128 ms/ # ping test1ping: bad address 'test1'/ #

  删除test2容器,然后再之前创建test2的命令上添加--link test1:

docker run -d --name test2 --link test1 busybox /bin/sh -c "while true;do sleep 3600;done"

  测试一下是否能够通过容器名来互联:

[root@docker ~]# docker exec -it test2 /bin/sh/ # ping 172.17.0.3PING 172.17.0.3 (172.17.0.3): 56 data bytes64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.141 ms64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.133 ms64 bytes from 172.17.0.3: seq=2 ttl=64 time=0.125 ms^C--- 172.17.0.3 ping statistics ---3 packets transmitted, 3 packets received, 0% packet lossround-trip min/avg/max = 0.125/0.133/0.141 ms/ # ping test1PING test1 (172.17.0.3): 56 data bytes64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.110 ms64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.113 ms64 bytes from 172.17.0.3: seq=2 ttl=64 time=0.113 ms^C--- test1 ping statistics ---3 packets transmitted, 3 packets received, 0% packet lossround-trip min/avg/max = 0.110/0.112/0.113 ms/ #

  由此可见,通过--link test1相当于在test1和test2之间添加了一个类似于DNS的记录,使得两个容器之间可以通过容器名来互联。

  但是docker的link是有方向性的,test2link到test1所以在test2容器中可以通过ping test1,但是在test1容器中却不可以通过容器名访问test2容器。

[root@docker ~]# docker exec -it test1 /bin/sh/ # ping 172.17.0.2PING 172.17.0.2 (172.17.0.2): 56 data bytes64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.087 ms64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.092 ms64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.084 ms^C--- 172.17.0.2 ping statistics ---3 packets transmitted, 3 packets received, 0% packet lossround-trip min/avg/max = 0.084/0.087/0.092 ms/ # ping test2ping: bad address 'test2'/ #

  由于这个原因,在生产中link使用的并不多。我们可以先自己创建一个自定义的网络,然后使这些容器都连接在我们自定义的网络上,这样即可以用IP访问,也可以使用容器名访问。

docker中,只要两个容器使用的不是默认的网络,即,两个容器之间使用的都是自定义的网络,那么他们之间就相当于添加了一个双向的link。即可以通过IP访问,也可以通过容器名访问。

转载于:https://www.cnblogs.com/jie-fang/p/10279746.html

你可能感兴趣的文章
fis webpack 原理对比
查看>>
22 广播的发送
查看>>
Linux 创建用户 限制SFTP用户只能访问某个目录
查看>>
正则表达式的学习笔记
查看>>
android图片特效处理之图片叠加
查看>>
结束贪心hdu 2491 Priest John's Busiest Day
查看>>
RHEL7中防火墙firewalld基础使用配置
查看>>
编程漫谈(八):此刻的幸福
查看>>
Python实现Json结构对比的小工具兼谈编程求解问题
查看>>
Java入门之:基本数据类型
查看>>
导航属性
查看>>
指针函数与函数指针
查看>>
Git工作流总结
查看>>
什么时候修改class
查看>>
冒泡与捕获的理解
查看>>
Jira客户端
查看>>
BZOJ1192: [HNOI2006]鬼谷子的钱袋
查看>>
shell之变量字符串的操作
查看>>
centos的网络配置
查看>>
clone git 项目到 非空目录
查看>>