链接机制介绍如果同一个主机上的多个docker容器想要通信,可以使用容器的ip地址进行通信,也可以使用主机的ip加上容器暴露的端口号进行通信。前者会导致ip地址硬编码,不方便迁移,重启容器后ip地址会发生变化。除非使用固定ip,否则后者的通信方式相对简单,只能依靠监听暴露端口的过程进行有限的通信。Docker的链接机制可以通过一个名称与另一个容器进行通信。链接机制有助于容器发现其他容器,并可以安全地将一些连接信息传输到其他容器。Docker run --link可以用来链接两个容器,这样源容器(链接容器)和接收容器(主动非链接容器)就可以互相通信。本质上,接收容器的/etc/hosts将添加关于源容器的dns解析。接收容器可以通过容器名/容器id/别名访问源容器,接收容器可以获取源容器的一些数据,比如源容器的环境变量。这种机制的局限性是dns解析只有一项,接收容器只能dns解析源容器,而源容器不能dns解析接收容器。
使用链接
格式--链接
1.链接参数函数。如果同一个主机上的多个docker容器需要相互通信,首先想到的也是最简单的方法就是使用容器本身的ip地址和主机暴露的ip+端口号。我们知道默认情况下,docker重新运行后,对应的IP地址会发生变化,这样如果两个容器互相通信,就会变得很麻烦。我们每次都要修改通信的IP地址。这时候--link参数就派上用场了。它会为要链接的容器设置一个通信别名,即使重启后IP地址发生变化,仍然可以正常通信。
2.命令格式Docker Run-D--name我的名字--链接名:alisname-p本地端口:容器端口镜像名参数描述:
--名称:新容器名词
--链接:目标容器名:别名
-p:本地港口:集装箱港口
3.链接原理--链接的原理是在/etc/hosts中添加一个别名。
4.测试用例首先启动一个tomcat01容器。
Docker run -itd --Name Tomcat 01 -p 8100:8080 Tomcat:8 . 5 . 38 Docker PS获取容器的id d92f947ea54f
获取单个容器ip
docker inspect -f“{ range . network settings . networks } } { {。IP address } } { { end } } ' d 92f 947 ea 54f
启动nginx容器与tomcat01通信。
docker run -itd --NAME nginx 01 --LINK Tomcat 01 nginx进入容器内部查看etc/hosts配置文件。
docker exec -it nginx 01/bin/bash #进入容器内部apt更新& amp;Apt install -y iproute2 #安装ping命令cat /etc/hosts #检查配置文件127 . 0 . 0 . 1 localhost::1 localhost ip6-localhost ip6-loopback fe00::0ip 6-localnetff 00::0ip 6-mcast prefix ff02::1ip 6-allnodesff 02::2。ip6-所有路由器172 . 17 . 0 . 4 Tomcat 01d 92 f 947 ea 54 f 172 . 17 . 0 . 6 70 a4 C7 de 72测试nginx01 ping tomcat01
docker exec -it nginx 01 PING Tomcat 01 PING Tomcat 01(172 . 18 . 0 . 2):56数据字节64字节来自172.18.0.2: icmp_seq=0 ttl=64时间=0.102 ms64字节来自172.18.0.2: icmp_seq=1 ttl=64时间=0.093 ms64字节来自172.18.0 .2: icmp_seq=2 ttl
5.link参数注意:link参数建立的容器链接的主机需要处于运行状态,链接的容器也必须处于运行状态。由link选项链接的主机的ip不需要固定,因为每次创建新容器时都会检查链接容器的ip。并在/etc/hosts中生成新别名对应的ip。这篇介绍docker容器通信参数--链接的文章就在这里。关于docker容器通信链接的更多信息,请搜索主机频道zhujipindao以前的文章。或者继续浏览下面的相关文章。希望大家支持主机频道zhujipindao。以后多来com!
评论前必须登录!
注册