gpt4 book ai didi

docker - Docker 容器之间的通信 - 常用技术

转载 作者:行者123 更新时间:2023-12-02 20:48:50 26 4
gpt4 key购买 nike

我开始学习 docker(以及一般的微服务),并且我已经构建了一个愚蠢的小“hello world”类型应用程序(1 作为 .Net Core 控制台应用程序,另一个作为 ASP.NET Core Web 应用程序)在 Windows 上。

我的下一个里程碑是让 2 个容器相互通信,只是来回发送某种简单的消息。

实现容器间通信常用的技术有哪些?

我最初的想法是为容器的传出和传入消息设置一个队列,因此它不需要关注发现和直接与另一个容器对话。

这是一种常见的策略还是有更好的 docker-y 方法?

如果队列是一个不错的选择,人们通常在 docker 中使用什么(请记住,它需要在 Windows 容器中运行并理想地与 C# 客户端一起使用)?

我已经在 docker hub 上看到了用于 window 的 rabbitmq 的图像,并且我听说了一些好东西 - 虽然以前从未使用过它(我永远无法将它直接安装在我的 windows 机器上,但是使用 docker 我设法获得了一个工作版本几分钟后就起来了——我得说到目前为止我真的很喜欢 docker)。我愿意接受建议。

我见过一些人为他们的容器建议使用restful api,但这似乎要复杂得多,因为您需要知道要与之通信的特定容器,并且接收容器需要以某种方式确认您已获得授权与它通信(我猜你可能会有一个特殊的授权容器来类型转换 token )。

最佳答案

What techniques are commonly used to achieve communication between containers?



Docker 具有创建虚拟网络的能力。您可以将多个容器添加到同一个网络,并且每个容器可以使用另一个容器的名称直接与其他容器通信。容器名称将充当 DNS 名称,并将自动解析同一网络中的容器。

Concerning queues:



队列或更一般的消息传递技术非常适合微服务。消息传递允许异步通信,这对可扩展性非常有利。消息传递不太适合请求/响应类型的通信,其中发送者希望接收者直接响应。顾名思义,它们更适合用于发送消息。(想想发送电子邮件,您不会阻止等待回复)

另一方面,Rest API 属于同步通信的范畴。它们是公开 API 以进行请求/响应通信的最流行方式。

一般来说,REST API 比消息传递技术更容易实现。消息通信需要一个位于通信端点之间的消息代理(例如 Rabbitmq)。

总之,如果您的通信是异步的,请使用 rabbitmq。否则,如果您有请求/响应通信场景,请在您的应用程序中公开其余 API。

最后,无论您选择什么,docker 网络都将允许您将所有内容粘合在一起。如果你使用rabbitmq,你将它添加到网络中,然后发送消息到 兔MQ (容器名称)主机。

关于docker - Docker 容器之间的通信 - 常用技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45897004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com