docker容器通信参数使用及link参数介绍

 更新时间:2022年09月28日 11:17:53   作者:IT技术分享社区  
这篇文章主要介绍了docker容器通信参数使用及link参数介绍,link的原理就是在/etc/hosts里面添加了一个alias的名称,本文通过案例分析给大家详细讲解,需要的朋友可以参考下

link机制介绍

同一个宿主机上的多个docker容器之间如果想进行通信,可以通过使用容器的ip地址来通信,也可以通过宿主机的ip加上容器暴露出的端口号来通信,前者会导致ip地址的硬编码,不方便迁移,并且容器重启后ip地址会改变,除非使用固定的ip,后者的通信方式比较单一,只能依靠监听在暴露出的端口的进程来进行有限的通信。通过docker的link机制可以通过一个name来和另一个容器通信,link机制方便了容器去发现其它的容器并且可以安全的传递一些连接信息给其它的容器。docker run --link可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信,本质是接收容器的/etc/hosts会添加关于源容器的dns解析,接收容器可以通过容器名/容器id/alias访问源容器,并且接收容器可以获取源容器的一些数据,如源容器的环境变量。该机制的局限是dns解析只是单项的,接收容器只能dns解析源容器,而源容器无法dns解析接收容器。 

link使用

格式

--link <name or id>:alias

其中,name和id是源容器的name和id,alias是源容器在link下的别名

1、link 参数作用

同一个宿主主机上的多个docker容器之间如果需要进行通信,第一种最容易想到的方式就是使用容器自身的ip地址、宿主主机的ip+容器暴露出的端口号来通信,我们知道默认情况下docker重新run后,对应的IP地址就会改变,这样如果两个容器之间通信就会变得非常麻烦,每次都要修改通信的IP地址。这个时候 --link参数就派上大用场了,它会给要链接的容器设定一个通信的别名,即使重启后IP地址发生了改变,依然可以正常通信。

2、命令格式

docker run -d --name myname--link toname:alisname -p 本地端口:容器端口 镜像名称 

参数说明:

-- name:新容器名词

-- link:目标容器名称:别名

-p: 本地端口:容器端口

3、link原理

--link的原理就是在/etc/hosts里面添加了一个alias的名称

4、测试案例

首先启动一个tomcat01的容器

docker run -itd --name tomcat01 -p 8100:8080 tomcat:8.5.38 

docker ps 获取容器的id d92f947ea54f

获取单个容器 ip

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' d92f947ea54f

启动一个nginx容器设置与tomcat01连通

 docker run -itd --name nginx01 --link tomcat01 nginx

进入容器内部查看 etc/hosts配置文件

docker exec -it nginx01 /bin/bash #进入容器内部
apt update && apt install -y iproute2 # 安装ping命令
cat /etc/hosts #查看配置文件
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.4      tomcat01 d92f947ea54f
172.17.0.6      70aa4c7dde72

测试nginx01 ping tomcat01

docker exec -it nginx01 ping tomcat01 
PING tomcat01 (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.102 ms
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.093 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from 172.18.0.2: icmp_seq=3 ttl=64 time=0.073 ms
 

5、link参数注意事项

  • 使用link参数建立的容器所链接的主机需要处于运行状态
  • 所链接的容器也必须是运行状态
  • 使用link选项链接的主机ip不需要固定,因为每次新建容器都会检查所链接容器的ip,并在/etc/hosts里生成新的alias 名称对应的ip

到此这篇关于docker容器通信参数 --link参数介绍的文章就介绍到这了,更多相关docker容器通信link内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker遇到Intellij IDEA,Java开发提升了十倍生产力

    Docker遇到Intellij IDEA,Java开发提升了十倍生产力

    这篇文章主要介绍了Docker遇到Intellij IDEA,Java开发提升了十倍生产力,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • docker部署gitlab以及修改初始密码方式

    docker部署gitlab以及修改初始密码方式

    这篇文章主要介绍了docker部署gitlab以及修改初始密码方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • 局域网内部署 Docker Registry(推荐)

    局域网内部署 Docker Registry(推荐)

    本文将从创建单机的 Docker Registry 开始,逐步完成局域网内可用的 Docker Registry 的创建,并重点解释如何使用 IP 地址访问 Registry 的方法
    2017-05-05
  • 编写最佳的Dockerfile的方法

    编写最佳的Dockerfile的方法

    本文给大家分享的是如何编写最佳的dockerfile的方法,通过具体实例帮助大家快速掌握编写Dockerfile的技巧
    2017-06-06
  • Docker管理之碎片知识整理小结

    Docker管理之碎片知识整理小结

    本文旨在汇总整理Docker日常管理之知识碎片,以便日后回顾查看参考。文中通过示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • docker安装elasticsearch和kibana的方法步骤

    docker安装elasticsearch和kibana的方法步骤

    这篇文章主要介绍了docker安装elasticsearch和kibana的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • docker拷贝文件到主机及导入导出容器及运行导出容器方式

    docker拷贝文件到主机及导入导出容器及运行导出容器方式

    这篇文章主要介绍了docker拷贝文件到主机及导入导出容器及运行导出容器方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Springboot使用docker-compose实现动态配置过程

    Springboot使用docker-compose实现动态配置过程

    这篇文章主要介绍了Springboot使用docker-compose实现动态配置全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 手把手教你docker部署(使用docker-compose)教程

    手把手教你docker部署(使用docker-compose)教程

    使用 Docker Compose 可以轻松、高效的管理容器,下面这篇文章主要给大家介绍了关于手把手教你docker部署(使用docker-compose)的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • docker 容器添加指定网络地址的方法实现

    docker 容器添加指定网络地址的方法实现

    Docker容器运行的时候默认会自动分配一个默认网桥所在网段的IP地址,本文主要介绍了docker容器添加指定网络地址的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01

最新评论