Docker容器中的Java 9 Tomcat 9无法远程debugging

我有一个基于opendjdk:8-slim的Docker容器opendjdk:8-slim和已安装的Tomcat 9,我正在debugging从我的IDE(IntelliJ)部署的应用程序 – IDE在Docker主机上运行。 我使用以下configuration运行Tomcat

 CATALINA_OPTS="-Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=49520 \ -Dcom.sun.management.jmxremote.rmi.port=49520 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.local.only=false \ -Djava.rmi.server.hostname=10.0.75.1 \ -agentlib:jdwp=transport=dt_socket,address=49540,suspend=n,server=y" 

一切都很好 – 我可以将IDE连接到容器。 另外,以下命令可以工作(从docker主机执行) – 它可以连接到容器中的进程(容器中的端口49540映射到主机上的端口49540):

 docker-host$ telnet localhost 49540 

现在我想升级到Java 9.我把基本镜像从openjdk:8-slim改成了openjdk:9-slim ,我无法连接到docker主机的debugging器端口。 同样从IDE,我得到SocketTimeoutException: Connection reset 。 但是,从容器内部我可以通过telnet连接到debugging器。

我尝试了几个来自openjdk仓库的Java 9镜像,还有其他的仓库,比如说adenix/java ,但是不幸的是结果是一样的。

最后,我发现如何使用Alan Bateman提供的评论中的信息来工作。

不用在CATALINA_OPTS中设置debugging设置(JDK 8没有问题),我设置了JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=*:4954‌​0,server=y,suspend=n‌​" Tomcat与catalina.sh jpda run 。 具体的IP地址(例如address=192.168.16.1:49540 )对我来说仍然不起作用,尽pipe可以从容器内访问IP地址。