同一宿主机内不同docker间通讯的实现示例
作者:hakukun
本文主要介绍了同一宿主机内不同docker间通讯的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
推荐使用自定义Bridge网络,实现同一宿主机内不同docker间通讯。自定义网络会自动维护 “容器名→IP” 的映射(DNS 服务),容器可直接通过容器名通讯,无需手动管理 IP,稳定性最高。
1. 创建自定义网络
执行命令创建一个名为 my-network 的桥接网络(驱动为 bridge)
sudo docker network create --driver bridge my-network
2. 启动容器时加入自定义网络
启动容器时通过 --network my-network 指定网络,同时可通过 --name 给容器起固定名称(方便通讯)
# 打开一个终端,启动容器A(命名为app1) sudo docker run -it --name app1 --network my-network osrf/ros:noetic-desktop-full # 打开另一个终端,启动容器B(命名为app2) sudo docker run -it --name app2 --network my-network osrf/ros:noetic-desktop-full
3. 容器间通讯连接测试
进入app2 容器,测试与app1(容器名)连接
# 如果显示bash: ping: command not found时执行 sudo apt-get update sudo apt-get install iputils-ping # 在 app2内ping app1(验证连通性) ping app1 # 会解析到 app1 的容器IP
如下图可见,可以正常ping通

4. 网络连接操作
1. 查看网络
sudo docker network ls
NAME 列显示网络名称,自定义网络通常是用户指定的名称(如 my-network)
DRIVER 列显示网络驱动类型(自定义网络常用 bridge)

2. 查看特定网络的详细信息
如果需要了解某个网络的详细配置(如关联的容器、IP 网段等),使用 docker network inspect 命令:
sudo docker network inspect 网络名称或ID
输出会包含网络的 IP 配置、关联的容器列表、创建时间等详细信息:

3. 删除自定义网络
- 先断开容器与网络的连接(可选)。如果网络中有关联的容器,需先将容器从网络中移除(容器可以继续运行):
sudo docker network disconnect 网络名称 容器名称或ID
示例(将容器 app1 从 my-network 中移除):
sudo docker network disconnect my-network app1
- 删除自定义网络
sudo docker network rm 网络名称或ID
示例(删除名为 my-network 的自定义网络):
sudo docker network rm my-network
如果删除成功,命令会返回被删除的网络名称;如果失败(如网络中仍有关联容器),会提示错误信息。

到此这篇关于同一宿主机内不同docker间通讯的实现示例的文章就介绍到这了,更多相关同一宿主机docker间通讯内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
