我有一个docker镜像,我在其中启动jstatd -p 1099
,然后启动我的Java应用程序。我还在dockerfile中公开了端口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来分析应用程序。如何找到正确的ip连接?尝试在端口1099上远程登录到应用程序的域名。
答案 0 :(得分:1)
容器的端口未绑定到实例的端口,这很好,因为您不想公开公开调试接口。可以在以下位置找到容器的IP地址:
$ sudo docker ps
$ sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container_id>
启动一个SSH隧道,该端口从本地端口5005隧道传输到该IP地址和端口5005。
$ ssh ec2-user@ec2-54-204-111-222.compute-1.amazonaws.com -L 5005:<ip>:5005 -N
答案 1 :(得分:1)
或者您可以通过iptables
$ 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