Docker笔记:Docker容器通信参数-Link参数介绍

云计算 云原生
我们知道默认情况下docker重新run后,对应的IP地址就会改变,这样如果两个容器之间通信就会变得非常麻烦,每次都要修改通信的IP地址。这个时候 --link参数就派上大用场了,它会给要链接的容器设定一个通信的别名,即使重启后IP地址发生了改变,依然可以正常通信。

link 参数作用

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

命令格式

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

参数说明:

  • -- name:新容器名词
  • -- link:目标容器名称:别名
  • -p:本地端口:容器端口

link原理

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

测试

首先启动一个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

link参数注意事项

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


责任编辑:武晓燕 来源: IT技术分享社区
相关推荐

2022-03-10 08:24:17

Docker容器SaaS

2024-12-06 08:00:00

2024-03-22 09:54:04

Docker网络驱动容器网络

2022-07-20 15:19:17

容器Docker

2010-09-02 10:14:24

路由器性能

2010-06-13 12:32:58

Ubuntu Grub

2019-07-16 14:44:52

DockerMySQL操作系统

2015-08-19 14:54:25

2022-08-31 07:24:56

Docker日志命令

2010-06-24 16:04:44

2009-08-14 17:27:56

C#方法参数

2009-12-25 16:51:37

ADO参数

2019-12-16 12:11:53

Docker容器Kubernetes

2023-12-14 15:51:15

2023-05-30 14:56:18

Docker开发容器

2019-07-01 09:33:58

DockerNginx操作系统

2016-08-23 09:16:46

Docker镜像容器

2014-11-20 10:55:47

Docker容器技术虚拟化

2023-09-08 00:02:47

2022-07-29 10:01:50

Docker退出码
点赞
收藏

51CTO技术栈公众号