Java 如何使用docker监听microservice上的特定端口
我在使用docker监听microservice上的端口时遇到问题。在本地,一切都很完美,所以我假设只有正确的配置才有问题 因此,我开始以以下方式在特定IP:端口上侦听SNMP消息的microservice:Java 如何使用docker监听microservice上的特定端口,java,docker,web-services,snmp,putty,Java,Docker,Web Services,Snmp,Putty,我在使用docker监听microservice上的端口时遇到问题。在本地,一切都很完美,所以我假设只有正确的配置才有问题 因此,我开始以以下方式在特定IP:端口上侦听SNMP消息的microservice: private static final String UDP = "udp:/"; private static final String SLASH_PREFIX = "/"; private static final S
private static final String UDP = "udp:/";
private static final String SLASH_PREFIX = "/";
private static final String TRAP_IP = "0.0.0.0"; // or container-name
private void prepareTrapConfiguration() throws IOException {
MessageDispatcher dispatcher = getMessageDispatcher();
Address listenAddress = GenericAddress.parse(String.format("%s%s%s%s", UDP, TRAP_IP, SLASH_PREFIX, 162));
log.debug("Starting listening TRAP on: {} ", listenAddress.toString());
DefaultUdpTransportMapping transport = new DefaultUdpTransportMapping((UdpAddress) listenAddress);
log.info("Started listening TRAP on: {} ", listenAddress.toString());
Snmp snmp = new Snmp(dispatcher, transport);
prepareSecurity(snmp);
snmp.addCommandResponder(trapReceiverCmd);
snmp.listen();
}
private void prepareSecurity(Snmp snmp) {
snmp.getMessageDispatcher().addMessageProcessingModel(new MPv1());
snmp.getMessageDispatcher().addMessageProcessingModel(new MPv2c());
SecurityProtocols.getInstance().addDefaultProtocols();
SecurityProtocols.getInstance().addPrivacyProtocol(new Priv3DES());
}
我正在启动docker compose的docker映像。码头工人:
version: '2.1'
services:
snmp:
image: snmp:latest
container_name: snmp
ports:
- "5435:5435"
- "127.0.0.1:162:162/udp"
networks:
- default
restart: always
networks:
default:
driver: bridge
之后,我将在端口162上对IP进行隧道传输。我已经尝试过使用SNMP容器IP,也尝试过使用putty使用localhost IP
最后,我在127.0.0.1:162本地发送消息,但什么也没发生——容器上没有收到消息。通过Wireshark我收到了无法到达的端口
提前感谢您提供的提示如果您的主机是Windows,请尝试在linux上收听主机.docker.internal,
172.17.0.1我说得对吗?您正在容器内收听,并从本地主机发送?@AlexBuyny是的,很抱歉没有尽早回复感谢您的回复!!我不想成为windows上的主机-我只想测试我的解决方案。它将在centos上进行监听-消息将不是来自windows,而是来自交换机设备。