Docker Network
Docker内两个不同的容器如何通信?
Docker是一个强大的工具,帮助你使用Docker引擎运行容器。
今天,我们将重点讨论网络部分,并尝试通过基本的例子来了解它是如何工作的。具体来说,我们将尝试回答这个问题。
Docker里面2个容器如何通信?
首先可以先查看docker默认的网络模式
docekr network ls
- 当你的应用程序运行在独立的容器中,需要进行通信时,通常会使用桥接网络(bridge)
- 主机网络(host)。取消容器和Docker主机之间的网络隔离,直接使用主机的网络。
1.让我们创建一个新的nginx容器
docker run --name my_nginx -d -p 80:80 nginx:latest
docker inspect network bridge ## 查看网络情况
现在在docker内部就有如下的情况
2. 创建一个新的network
docker network create -d bridge my_network
docker inspect network bridge my_network
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
现在当我们试图用ping 来检查两个容器部署的nginx是否能通信时,答案是否定的
让我们将网络进行连接
docker network connect my_network my_nginx
一个有意思的事情
有趣的是,连接到默认网桥上的两个容器不能用它们的容器名称来互相呼应,但使用ip地址却可以,这是因为默认桥接没有嵌入 DNS 服务,无法将IP地址与容器名称绑定。
总结
主要回顾了一下docker容器通信的过程。
- 当在默认网桥建立容器的基础上,容器可以自主进行通信。
- 当新建一个网桥时,容器不能进行通信,需要进行连接才可以。
- 默认网桥不具备dns解析,所以不能直接采取容器名称进行通信
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix