docker容器相互通信

创建名为my_network的桥接网络,然后将运行中的或新启动的s1和s2容器连接到该网络。通过dockerrun命令指定--network参数,允许容器加入网络。一旦连接,s1可以通过pings2进行通信。这种方法确保了容器间的网络连通性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何让两个docker容器s1、s2相互通信?

  • 创建桥接网络

    1. 创建
      docker network create my_network
      
    2. 查看
      docker network ls
      
  • 容器连接指定网络的两种情况

    1. 容器还未启动,则启动时指定网络

      docker run -d --name=s1 --network my_network
      docker run -d --name=s2 --network my_network
      
    2. 容器已在运行,则连接指定网络

      docker run -d --name=s1 --network my_network
      docker run -d --name=s2 --network my_network
      
  • 测试在容器s1中ping s2

    ping s2
    

参考:
https://blog.youkuaiyun.com/come11234/article/details/126763873
https://blog.youkuaiyun.com/Trollz/article/details/126176819

### Docker 容器间网络通信机制 容器之间的通信依赖于Docker所创建的虚拟网络环境。每个容器运行在其自身的网络命名空间内,这意味着它们拥有独立的网络配置,如IP地址、路由表等[^3]。 #### 默认桥接网络模式下的容器通信 当启动容器时,默认情况下会连接到名为`bridge`的默认网络中,在这个网络里存在一个特殊的网桥——docker0。此网桥充当着内部路由器的角色,使得同一台主机上不同容器能够相互通信。通过查看宿主机上的网络接口可以发现这些由Docker自动生成并关联至docker0网桥的veth对设备[^4]: ```bash ifconfig ``` 对于位于相同子网内的容器而言,可以直接利用其分配给各自的私有IPv4地址来进行互相访问;而对于跨主机的情况,则可能需要用到额外工具或设置来实现互联,比如使用特定命令为容器指定静态IP地址以便更好地管理多节点间的通讯[^1]。 #### 使用服务名称解析(仅限单机) 如果是在单一物理机器上构建应用集群,并采用Docker Compose作为编排工具的话,那么各个微服务之间可以通过定义的服务名相互调用API端点而无需关心实际背后的IP地址变化情况。这是因为Compose会在背后自动处理好DNS映射工作,让同属一个项目里的所有成员都能方便快捷地找到彼此[^2]。 ```yaml version: '3' services: web: image: nginx db: image: mysql ``` 在这种场景下,只要确保所有的服务都处于同一个用户自定义的桥梁网络之下即可正常运作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值