도커 컨테이너에서 실행중인 Java 응용 프로그램이 있습니다. 이 컨테이너를 ECS 클러스터에 배포했습니다. 해당 컴퓨터에 설치된 CollectD 에이전트를 사용하여 JVM 통계를 수집 할 수 있도록 JMX 포트를 노출하고 싶습니다.도커에서 JMX 포트를 노출합니다. ECS 클러스터에서 실행중인 컨테이너
는 JVM PARAMS 내 자바 응용 프로그램에서 지정한 것을 내가 아닌 고정 표시기 환경에서이 응용 프로그램을 실행할 경우이 JMX 포트에 연결할 수 있어요
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
있습니다. 그러나 Docker에서도 동일한 작업을 수행 할 수 없습니다.
또한이 포트를 외부 세계에 노출시킬 수 있도록 내 작업 정의에 포트 매핑을 지정했습니다. 나도 알다시피, 만약 내가 도커 실행 명령을 사용하여이 docker를 실행한다면 포트 매핑을 위해 -p param을 지정할 수 있었지만이 이미지를 배포하는 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"
}
]
}
작업 정의 게시 –
질문 업데이트 –