在AWS EB上的Docker中远程debuggingJVM

我有一个docker图像,我开始jstatd -p 1099 ,然后我的Java应用程序。 我也暴露在docker文件中的端口1099。

我已经将此Docker镜像部署到了AWS ElasticBeanstalk,我可以从EB日志中看到该端口已经公开。

 /var/log/docker-ps.log ------------------------------------- 'docker ps' ran at Fri Jun 17 04:23:02 UTC 2016: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d3199a65e216 8b9c53bb10b6 "/app/run.sh" 5 minutes ago Up 5 minutes 1099/tcp, 8080/tcp jolly_carson 

我现在想用VisualVM来分析应用程序。 我怎样才能find正确的IP连接? 尝试远程login到端口1099上的应用程序的域名超时。

容器的端口没有绑定到实例的端口,这很好,因为你不想公开你的debugging接口。 容器的IP地址可以通过以下方式find:

 $ sudo docker ps $ sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container_id> 

启动从本地端口5005到本地IP地址和端口5005的SSH隧道。

 $ ssh ec2-user@ec2-54-204-111-222.compute-1.amazonaws.com -L 5005:<ip>:5005 -N 

或者你可以通过iptablesconfiguration端口转发

 $ sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' stupefied_swartz 172.17.0.2 $ sudo iptables -t nat -A PREROUTING -p tcp --dport 5005 -j REDIRECT --to-destination 172.17.0.2:5005 
Interesting Posts