Docker Network

Docker内两个不同的容器如何通信?

Docker是一个强大的工具,帮助你使用Docker引擎运行容器。

今天,我们将重点讨论网络部分,并尝试通过基本的例子来了解它是如何工作的。具体来说,我们将尝试回答这个问题。

Docker里面2个容器如何通信?

首先可以先查看docker默认的网络模式

    docekr network ls

img

  • 当你的应用程序运行在独立的容器中,需要进行通信时,通常会使用桥接网络(bridge)
  • 主机网络(host)。取消容器和Docker主机之间的网络隔离,直接使用主机的网络。

1.让我们创建一个新的nginx容器

    docker run  --name my_nginx -d -p 80:80 nginx:latest
    docker inspect network bridge  ## 查看网络情况

img
现在在docker内部就有如下的情况
img

2. 创建一个新的network

    docker network create -d bridge my_network 
    docker inspect network bridge my_network

img

3. 创建一个新的nginx2容器并指定与my_network进行通信

    docker run -d  --name nginx2 --network my_network -p 81:80 nginx:latest

    docker network inspect my_network  
    
    ping: unknown host  

img
现在当我们试图用ping 来检查两个容器部署的nginx是否能通信时,答案是否定的
img

让我们将网络进行连接

    docker network connect my_network my_nginx
    

img

一个有意思的事情

有趣的是,连接到默认网桥上的两个容器不能用它们的容器名称来互相呼应,但使用ip地址却可以,这是因为默认桥接没有嵌入 DNS 服务,无法将IP地址与容器名称绑定。

总结

主要回顾了一下docker容器通信的过程。

  1. 当在默认网桥建立容器的基础上,容器可以自主进行通信。
  2. 当新建一个网桥时,容器不能进行通信,需要进行连接才可以。
  3. 默认网桥不具备dns解析,所以不能直接采取容器名称进行通信
posted @   Asakalan  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示