1
我有一個在Docker容器中運行的Java應用程序。我已經在ECS集羣中部署了這個容器。我想公開一個JMX端口,以便我可以使用安裝在該機器上的CollectD代理收集JVM統計信息。在Docker容器中公開JMX端口容器在ECS集羣上運行
的JVM PARAMS,我在我的Java應用程序指定的
JAVA_OPTS="-Dspring.config.location=classpath:/base/ -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8008 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=10.0.7.118
我能夠連接到這個端口JMX如果我運行在非泊塢窗環境這個應用程序。但是,我無法在Docker中做同樣的事情。
我也在我的任務定義中給出了端口映射,所以這個端口可以暴露給外部世界。我知道,如果我使用docker run命令運行此docker,而不是我可以爲端口映射指定-p參數,但我無法在此處執行此操作,因爲我在部署此映像的ECS羣集上運行此應用程序。所以我必須依賴任務定義提供的端口映射。
TaskDefnition
"ContainerDefinitions": [
{
"Name": "MyApplication",
"Cpu": "2048",
"Essential": "true",
"Image": "location of the image",
"Memory": "8192",
"MemoryReservation": "4096",
"Environment": [
{
"Name": "Test",
"Value": {
"Fn::GetAtt": [
"SomeAttrib",
"SomeAccessKey"
]
}
}
],
"PortMappings": [
{
"HostPort": "8080",
"ContainerPort": "8080"
},
{
"HostPort": "8008",
"ContainerPort": "8008"
}
]
}
發佈任務定義 –
更新了問題 –