gpt4 book ai didi

docker - 在Docker容器之间进行通讯的最佳实践

转载 作者:行者123 更新时间:2023-12-02 18:35:21 26 4
gpt4 key购买 nike

我在Raspberry pi上运行的应用程序中有两个容器。一个容器是一个python容器,它从I / O设备接收零星的输入。另一个容器正在运行Electron JS。我的问题是将python容器接收的数据从I / O设备推送到Electron JS应用的最佳方法是什么?我介于写入共享卷和使用websocket在两个容器之间进行通信之间,但是不知道哪种方法更好,为什么。

最佳答案

标准做法是使用网络连接。您提到了Websockets,但是简单的HTTP连接可以正常工作,并且管理起来更容易一些。

设置非常简单。即使您没有使用Compose,Networking in Compose也会对设置进行合理的描述:安排Docker网络存在(Compose自动执行此操作),然后另一个容器的名称(Compose服务名,docker run --name)可用作主机名称。如果您使用的是Compose,则根本不需要进行任何设置,准系统的docker-compose.yml将起作用:

version: '3'
services:
container-a:
build: a
container-b:
build: b

如果您不使用Compose,则需要手动创建网络,大致类似于

docker network create some-net
docker run --net some-net --name container-a ...
docker run --net some-net --name container-b ...

在这两种情况下,在这两个容器中, container-acontainer-b是解析到相应容器的有效主机名。

我不会在这里尝试使用共享文件系统或Unix套接字。共享卷设置更为复杂,并且需要一些其他设置来确保权限正确。 TCP网络没有。还提出了一个严格的要求,即两个容器都在同一物理节点上,并且只有一台服务器。如果您期待Docker Swarm或Kubernetes等集群环境,则相同的TCP / HTTP网络机制将起作用(即使设置可能非常不同),但是集群环境可以提供负载均衡器,以便您可以拥有多个副本服务器,并且没有特别要求将服务器和客户端放在同一位置。

关于docker - 在Docker容器之间进行通讯的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59565878/

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