docker笔记:docker容器通信参数 --link参数介绍

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

image_365c7eb4.png

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

image_bd173eda.png

获取单个容器 ip

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

image_fdf2d8a6.png

启动一个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
相关文章
|
5月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
712 6
|
5月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
582 6
|
6月前
|
Kubernetes Devops Docker
Kubernetes 和 Docker Swarm:现代 DevOps 的理想容器编排工具
本指南深入解析 Kubernetes 与 Docker Swarm 两大主流容器编排工具,涵盖安装、架构、网络、监控等核心维度,助您根据团队能力与业务需求精准选型,把握云原生时代的技术主动权。
634 115
|
6月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
7月前
|
运维 持续交付 开发者
Docker:重塑现代应用开发的容器革命
Docker:重塑现代应用开发的容器革命