【发布时间】:2016-05-29 17:35:59
【问题描述】:
当我直接在我的主机上运行 Docker 容器时,可以毫无问题地连接到它。
我的主机的网络是 192.168.1.0/24,主机的 IP 地址是 192.168.1.20。我的 Docker 容器的 IP 地址为 172.17.0.2。当我从 jconsole 连接到 172.17.0.2:1099 时,它可以工作。
当我将此服务放入 Docker 机器时,无法连接到它。
我的 Docker 机器的 IP 为 192.168.99.100,其中的容器的 IP 地址为 172.17.0.2,但是当我使用 jconsole 连接到 192.168.99.100:1099 时,它不起作用。
重复一遍:
192.168.1.20 --- 172.17.0.2:1099 有效
192.168.1.20 --- (192.168.99.100 --- 172.17.0.2:1099) 并从我的主机连接到 192.168.99.100:1099 不起作用。
值得一提的是,我可以通过 Docker 机器的外部 IP 地址访问 Docker 机器中容器化的服务,例如这将起作用:
192.168.99.100 --- (192.168.99.100:8080 --- 172.17.0.2:8080)
但是当我使用 JMX 时,它就不起作用了。
这是Tomcat服务。我在启动 Tomcat 实例的脚本中有这个:
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n \
-Dcom.sun.management.jmxremote.port=1099 \
-Dcom.sun.management.jmxremote.rmi.port=1099 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=IP address of Docker container
【问题讨论】:
-
它是由 docker-java 库启动的......它不是那么重要,但是当我执行“docker-machine ssh”并在其中“docker ps -a”时,我可以看到我的容器有这个端口绑定/暴露:ad6be9184855 company/tomcat:8.0.30 0.0.0.0:1099->1099/tcp, 0.0.0.0:8000->8000/tcp, 0.0.0.0:8009->8009/tcp, 0.0。 0.0:8080->8080/tcp
标签: tomcat networking docker jmx docker-machine