Docker——--link实现容器互联

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker——--link实现容器互联

Docker——--link实现容器互联

1、--link实现互联

1.1、容器间通过IP进行网络访问

新建两个容器tomcat01和tomcat02

docker run -d-P--name tomcat01 tomcat

docker run -d-P--name tomcat02 tomcat

QQ截图20211219131642.png

使用 ifconfig 命令查看toncat01的网卡信息:

QQ截图20211219132341.png

可以看到,tomcat01的IP地址为 172.17.0.2

再查看toncat02的网卡信息:

QQ截图20211219133203.png

可以看到,tomcat02的IP地址为 172.17.03

测试容器tomcat01和tomcat02是否能ping通:

tomcat01 ping tomcat02:

QQ截图20211219133437.png

tomcat02 ping tomcat01:

QQ截图20211219133330.png

根据上面两张图所示,不管是tomcat01 ping tomcat02还是tomcat02 ping tomcat01都是可以ping通的。

注:如果容器内没有ifconfig命令和ping命令,依次执行以下命令:

apt-get update

apt install iputils-ping

apt install net-tools

1.2、容器间通过容器名或容器id进行网络访问

容器间如果想通过容器名进行网络连接,需要使用 docker run --link 来链接两个容器。

--link可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信,并且接收容器可以获取源容器的一些数据,如源容器的环境变量。

--link 的格式

--link <name or id>:alias

--link 添加到另一个容器的链接

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

--link 的使用实例

创建容器tomcat03,让tomcat03作为接收容器(主动去链接的容器),上面的tomcat01(别名t1)作为源容器(被链接的容器),两个容器进行链接:

docker run -d-P--name tomcat03 --link tomcat01:t1 tomcat

tomcat01 是上面启动的 7b94f50c43ea 容器的名字,这里作为源容器,t1 是该容器在link下的别名(alias),通俗易懂的讲,站在tomcat03容器的角度,tomcat01 和 t1 都是 7b94f50c43ea 容器的名字,并且作为容器的hostname,tomcat03 用这2个名字中的哪一个都可以访问到 7b94f50c43ea 容器并与之通信(docker通过DNS自动解析)。

进行链接测试:tomcat03 ping tomcat01

ping tomcat01

QQ截图20211220094346.png

ping t1

QQ截图20211220094356.png

两个都能ping通,可见,tomcat01 和 t1 都指向172.17.0.2。

但上面这种链接只是单向的,就是只能接收容器链接源容器,源容器不能链接到接收容器,也就是 tomcat03 链接上了 tomcat01,tomcat03能ping通tomcat01,tomcat01并没有链接上tomcat03,tomcat01ping不同tomcat03。但是不影响tomcat01 通过IP ping tomcat03 或者tomcat03 ping tomcat01。

--link 原理

查看 tomcat03 的 hosts 文件,操作系统规定,在进行DNS请求以前,先检查系自己的hosts文件中是否有这个域名和IP的映射关系。如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向已知的DNS服务器提出域名解析请求。

docker exec -it tomcat03 cat /etc/hosts

QQ截图20211228091225.png

在tomcat03的hosts配置文件中,可以看到映射了tomcat01的IP、容器名、别名和容器id,所有tomcat03可以通过指定的容器名和tomcat01进行通信。

--link 就是在接收容器(这里是名为tomcat003的容器)添加了一条关于tomcat01容器的名称解析。有了这个名称解析后就可以不使用ip来和源容器通信了,除此之外当源容器重启,docker会负责更新/etc/hosts文件,因此可以不用担心容器重启后IP地址发生了改变,解析无法生效的问题。


相关文章
|
5天前
|
Web App开发 iOS开发 Docker
Docker 容器的日志
【10月更文挑战第31天】
16 5
|
4天前
|
存储 Kubernetes C++
Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
随着容器技术的快速发展,容器编排工具成为了现代软件开发和运维的重要环节。在众多容器编排工具中,Kubernetes和Docker Swarm无疑是最受欢迎的两个。本文将从技术特性、易用性和社区支持三个方面,对Kubernetes和Docker Swarm进行比较,以帮助您选择更适合您需求的容器编排工具。
19 3
|
5天前
|
存储 缓存 Docker
docker中挂载数据卷到容器
【10月更文挑战第16天】
15 2
|
7天前
|
存储 关系型数据库 MySQL
|
8天前
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第13天】
15 2
|
9天前
|
运维 监控 数据可视化
Docker容器可视化管理工具 - WGCLOUD基础介绍
WGCLOUD是新一代运维监测平台,它可以监控Docker容器的各种性能数据,比如内存,cpu,Image,运行时间,运行状态,端口映射等信息
|
9天前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
32 2
|
11天前
|
存储 Kubernetes 监控
深入探索Docker容器化技术的奥秘
【10月更文挑战第15天】深入探索Docker容器化技术的奥秘
16 0
|
11天前
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第12天】
35 5
|
16天前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。

热门文章

最新文章