docker 在rabbitMQ管理控制台的connection部分中,连接名称中的ip和port是什么意思?

2wnc66cl  于 2023-03-01  发布在  Docker
关注(0)|答案(1)|浏览(171)

我运行了这个rabbitMQ docker容器:

version: '3'
services:
  rabbitmq:
    image: rabbitmq:3-management-alpine
    environment:
      - RABBITMQ_DEFAULT_USER=guest
      - RABBITMQ_DEFAULT_PASS=guest
    ports:
        - 5672:5672
        - 15672:15672
    volumes:
        - ./.rabbitmq/data/:/var/lib/rabbitmq
        - ./.rabbitmq/log/:/var/log/rabbitmq

而且运行良好。
我有一个nodejs脚本put_message_into_queue.ts,它连接到它并尝试将一些消息放入队列中。
我在另一个脚本中也有一些工作者代码,它使用同一队列中的消息。
当我检查管理控制台时:

我可以看到两个连接,对应于运行不同进程的两个脚本。如果我单击其中一个连接:

关于标题:Connection 172.21.0.1:56526 -> 172.21.0.2:5672
172.21.0.1: what does this address mean?
56526:此端口是什么意思?
172.21.0.2: this should be the ip address of the rabbitMQ docker container
5672:这是在docker-compose中指定的端口
172.21.0.1:56526和我的一个运行脚本有什么关系?当我运行这个脚本时,它不会在任何端口上运行。那么172.21.0.1:56526是什么呢?

pqwbnv8z

pqwbnv8z1#

这些连接来自于Docker之外的地方可能是主机上的另一个进程或者是完全不同的系统。很难说更多。
在TCP中,连接的两端都有一个IP地址和一个端口号。如果你连接到Stack Overflow,你会把HTTP请求发送到某个地址(对我来说,看起来像151.101.1.69)和端口443,但是响应数据会返回到你的本地IP地址和一个随机分配的端口。RabbitMQ的有线协议也使用TCP。端口56526是从客户机随机分配的端口,在非容器RabbitMQ控制台中您会看到相同的随机端口。
Docker设置了一个 * 网络地址转换 * 层来提供容器专用IP地址。在您的示例中,Docker网络看起来像是IPv4网络172.21.0.0/16,RabbitMQ代理可以任意访问该网络。典型的约定是面向外部的路由器拥有网络上的第一个地址,Docker也会设置此地址;在172.21.0.1本例中,www.example.com是与主机对应的地址。
Docker端口Map在内部工作的方式往往会丢失实际的源地址。在第一个Map端口号上有一个从某个地方到主机的连接,以及一个从Docker到第二个端口号的连接,但这两个连接会丢失直接关联。这偶尔会对诊断和不太安全的IP ACLing造成影响;例如参见X1 E0 F1 X。
这些部分是:

  • 172.21.0.1是Docker网络上主机的IP地址
  • 56526是随机选择的TCP源端口
  • 172.21.0.2是容器专用IP地址
  • 5672是进程侦听的TCP端口,也应该是第二个合成ports:编号

相关问题