Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用docker监听microservice上的特定端口_Java_Docker_Web Services_Snmp_Putty - Fatal编程技术网

Java 如何使用docker监听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

我在使用docker监听microservice上的端口时遇到问题。在本地,一切都很完美,所以我假设只有正确的配置才有问题

因此,我开始以以下方式在特定IP:端口上侦听SNMP消息的microservice:

    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,而是来自交换机设备。