RabbitMQ管理控制台连接名称中的IP与端口含义咨询
RabbitMQ Docker连接地址与端口疑问解答
问题背景
我运行了如下配置的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
容器运行正常。我有一个Node.js脚本put_message_into_queue.ts负责向队列发送消息,另有一个Worker脚本负责消费同一队列的消息。在RabbitMQ管理控制台中可以看到对应两个脚本进程的连接,点击其中一个连接后,标题显示为Connection 172.21.0.1:56526 -> 172.21.0.2:5672。已知172.21.0.2是RabbitMQ容器的IP地址,现咨询:
- 172.21.0.1是什么地址?
- 56526是什么端口?
172.21.0.1:56526与我的运行脚本有何关联?
解答
1. 172.21.0.1是什么地址?
这是Docker宿主机在当前Docker网桥网络中的IP地址。当你在宿主机上运行Node.js脚本连接RabbitMQ容器时,连接请求会从宿主机的Docker网桥IP发起,这个IP是Docker默认网桥(或docker-compose创建的自定义网桥)分配给宿主机的内部地址。
2. 56526是什么端口?
这不是docker-compose配置中指定的端口,而是宿主机发起TCP连接时自动分配的临时源端口。TCP连接需要两端的端口:容器侧的5672是你配置的监听端口(映射到宿主机5672),而宿主机这边会随机挑选一个未被占用的临时端口作为连接的源端口,用来和容器的5672端口通信,这个端口是动态分配的,每次连接可能不同。
3. 172.21.0.1:56526与运行脚本的关联?
这个端点就是你运行Node.js脚本的宿主机发起连接时使用的源地址和端口。脚本在宿主机上运行,通过这个IP和临时端口与RabbitMQ容器的172.21.0.2:5672建立TCP连接,以此实现消息的发送或消费。
内容的提问来源于stack exchange,提问作者Kid_Learning_C
相关产品推荐
相关产品推荐

